我的脚本需要一些帮助。
首先,这是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);
参考:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)