根据下拉菜单自动下移行

问题描述 投票:0回答:1

我是 Google 表格新手,如果我将 F 列更改为“完成”,有人可以帮我编写代码,将整行移动到其他特定行吗? 例如:如果我将 F3 更改为“完成”,则整个第 3 行将自动移至第 40 行之后

注意:过滤功能在这种情况下对我们不起作用^^ 我尝试了宏,但是...必须手动激活宏^^,如果有一个脚本可以帮助自动执行宏,那就太好了,感谢您的帮助

在此输入图片描述

google-sheets
1个回答
0
投票

使用可安装的
onChange
触发器根据下拉菜单自动移动行

尝试使用 Google Apps 脚本来实现您的预期输出。

下面的函数将 F 列中标记为

Done
的行移动到第 40 行之后。它会清除它们的原始位置并将它们粘贴到新位置(从第 40 行开始),而不会破坏工作表布局。之后,设置可安装的
onChange trigger
,以便在发生更改时自动更新。

您可以尝试这个代码:

function moveToRow() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("Sheet1");
  var dataRange = sheet.getRange(1, 1, 39, 6);
  var data = dataRange.getValues();
  var arrayToPaste = [];
  for (i = 0; i < 38; i++) {
    if (data[i][5] == "Done") {
      arrayToPaste.push(data[i]);
      sheet.getRange(i + 1, 1, 1, 6).clear();
    }
  }

  var rowToPaste = sheet.getLastRow();
  if (rowToPaste <= 39) {
    rowToPaste = 40;
  }

  sheet.getRange(rowToPaste + 1, 1, arrayToPaste.length, 6).setValues(arrayToPaste);

}

设置可安装的 onChange 触发器:

1.) 打开脚本编辑器(扩展 > Apps 脚本)。

2.) 在脚本编辑器中,转到左侧边栏中的触发器(时钟图标)。

3.) 单击右下角的 + 添加触发器。

4.) 选择 onChange 作为要运行的函数。

5.) 选择来自电子表格并选择更改时作为事件类型。

6.) 保存触发器。

示例输出:

参考:

© www.soinside.com 2019 - 2024. All rights reserved.