我正在尝试比较两个不同的表值并删除匹配的单元格,
这就是我尝试过的方法,但是当我运行它时,没有任何反应:
function clearSourceValues(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceTable = ss.getSheetByName("Encaminhamento");
var targetTable = ss.getSheetByName("testeBD");
var rowCount = targetTable.getLastRow() + 1;
var sourceValues = sourceTable.getRange(2, 6, rowCount, 1).getValues();
var targetValues = targetTable.getRange(2, 1, rowCount, 1).getValues();
for (var i in targetValues){
var clearRange = targetTable.getRange(i + 1, 2, 1, 8);
if (targetValues[i][0] == sourceValues[i][0]){
clearRange.clear();
};
};
};
最佳答案
- 当
targetValues
和sourceValues
的“A”列的值为一样。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 在您的脚本中,使用了
for (var i in targetValues){
。在这种情况下,i
是字符串类型。这样,getRange(i + 1, 2, 1, 8)
中的i + 1
就变成了01, 11, 21, 31,,,
. - 在您的脚本中,值是从
Encaminhamento
和testeBD
的工作表中检索的。在您的情况下,值是从第 2 行检索的。在这种情况下,当i
是0
(即数字)时,它是第一行。这是与搜索到的行不同的行。
当以上几点反射(reflect)到你的脚本中时,它变成如下。
修改后的脚本:
在这个修改中,你的脚本被修改了。
从:for (var i in targetValues){
var clearRange = targetTable.getRange(i + 1, 2, 1, 8);
if (targetValues[i][0] == sourceValues[i][0]){
clearRange.clear();
};
};
到:
for (var i = 0; i < targetValues.length; i++){ // Modified
var clearRange = targetTable.getRange(i + 2, 2, 1, 8); // Modified
if (targetValues[i][0] == sourceValues[i][0]){
clearRange.clear();
};
};
引用资料:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
关于javascript - 比较不同的表格并清除匹配的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58885749/