根据另一个特定单元格范围的值从特定范围删除谷歌电子表格中的行

2023-12-13

我的脚本需要一些帮助。

首先,这是ss的链接:https://docs.google.com/spreadsheets/d/1TgG64irjoxkV9wKlT5bEnaNEWlGyOlNxVoLxOmQZ2BA/edit?usp=sharing

我想根据工作表“概述”(范围:C4:C12)中的值从工作表“Team 1”(范围:A15:A41)中删除行。

基本上,如果在 A15:A41 中找到 C4:C12 中的任何值,则应删除找到的行。

前任。对于我的 ss:C4 = 3,这意味着在工作表“Team 1”中,应删除第 17 行。

到目前为止我的脚本:

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s1 = ss.getSheetByName('Overview');
  var s2 = ss.getSheetByName('Team 1');
  var r1 = s1.getRange("C4:C12");
  var v1 = r1.getValues();
  var r2 = s2.getRange("A2:A28");
  var v2 = r2.getValues();

for (var i = v2.length - 1; i >= 0; i--)
  if (v2[i][0] == v1)
    s2.deleteRow(i + 2);
};

我不知道如何使其比较整个范围的数据,而不仅仅是单个单元格的数据。

Thanks.


我相信你的目标如下。

  • 您想要删除工作表的行Team 1通过比较工作表中的单元格“C4:C12”Overview工作表中的单元格“A2:A28”Team 1.

为此,这次修改怎么样?

修改要点:

  • 在这种情况下,需要比较“C4:C12”和“A2:A28”的所有值。但是当每个值v2与所有值进行比较v1在循环中,工艺成本会很高。因此,首先,它创建一个用于搜索值的对象,然后使用该对象运行搜索。

当你的脚本被修改后,它会变成如下所示。

修改后的脚本:

From:
for (var i = v2.length - 1; i >= 0; i--)
  if (v2[i][0] == v1)
    s2.deleteRow(i + 2);
To:
var obj = v1.reduce((o, [e]) => (Object.assign(o, {[e]: true})), {});
for (var i = v2.length - 1; i >= 0; i--)
  if (obj[v2[i][0]])
    s2.deleteRow(i + 2);

参考:

  • reduce()
  • 对象.分配()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据另一个特定单元格范围的值从特定范围删除谷歌电子表格中的行 的相关文章

随机推荐