我正在尝试比较两个表的值并删除匹配单元格的
这就是我尝试过的方法,但是当我运行它时,什么也没发生:
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();
};
};
};
答案 0 :(得分:1)
targetValues
和sourceValues
的“ A”列的值相同时,您想清除同一行从“ B”到“ L”的列。如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
for (var i in targetValues){
。在这种情况下,i
是字符串类型。这样,i + 1
中的getRange(i + 1, 2, 1, 8)
就变得像01, 11, 21, 31,,,
。Encaminhamento
和testeBD
的工作表中检索值。根据您的情况,从第2行中检索值。在这种情况下,当i
为0
(即数字)时,它是第一行。这是与搜索到的行不同的行。当以上几点反映到您的脚本中时,它如下所示。
在此修改中,您的脚本已修改。
从: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();
};
};
如果我误解了您的问题,而这不是您想要的方向,我深表歉意。