如何解决如果从另一个电子表格中找到匹配项,则删除行-Google表格 示例脚本:注意:参考文献:
如果在电子表格1中找到匹配项,我想从电子表格2中删除任何数据行。 在下图(电子表格1)中,我们有 SKU A10114和新位置J05A1 。
在下面的图像(电子表格2)中,您可以看到位置J05A1的SKU A10114 有2行。
因此该代码仅删除位置J05A1处的A10114的两行
如果A10114具有其他位置,则不会被删除
解决方法
我相信您的目标如下。
- 如果
Sales
工作表中“ A”和“ F”列的值包含在“Relocation
”工作表中的“ A”和“ B”列的值中,则要删除行Sales
工作表。
为此,我想提出以下流程。
- 从
Relocation
工作表中检索值,并创建一个用于搜索值的对象。 - 从
Sales
工作表中检索值,并创建一个用于删除行的数组。 - 删除行。
当以上流程反映到脚本时,它如下所示。
示例脚本:
function myFunction() {
const ss = SpreadsheetApp.getActive();
// 1. Retrieve the values from `Relocation` sheet and create an object for searching values.
const sheet1 = ss.getSheetByName('Relocation');
const valuesSheet1 = sheet1.getRange("A1:J" + sheet1.getLastRow()).getValues()
.reduce((o,[a,f]) => Object.assign(o,{[a + f]: true}),{});
// 2. Retrieve the values from `Sales` sheet and create an array for deleting the rows.
const sheet2 = ss.getSheetByName('Sales');
const valuesSheet2 = sheet2.getRange("A2:B" + sheet2.getLastRow()).getValues()
.reduce((ar,b],i) => {
if (valuesSheet1[a + b]) ar.push(i + 2);
return ar;
},[]).reverse();
// 3. Delete rows.
valuesSheet2.forEach(r => sheet2.deleteRow(r));
}
注意:
- 当我在共享电子表格中看到您的脚本时,从脚本中的工作表名称来看,我认为您的脚本可能与此问题无关。所以我提出了上面的示例脚本。
参考文献:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。