所以我在 google 电子表格中有 2 列,A 和 B,我想逐行比较它们(A1 到 B1,A2 到 B2,等等),最后计算具有完全相同值的单元格的数量(可以是字符串或整数,但必须相同)并将其放入另一个单元格,例如 D1。这是我到目前为止得到的,但它似乎没有做任何事情,也没有返回任何错误。
function compare() {
var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('theSheetINeed');
var range1 = ss.getRange('A1:A'); //the first column
var data1 = range1.getValues();
var range2 = ss.getRange('B2:B'); //the second column
var data2 = range2.getValues();
var count = []; //to count the number of match
for(var i =0;i 'smaller than' data1.length; i++){ //somehow i cant use '<'
var abc = data1[i];
var def = data2[i];
if(abc == def){
count += count;
};
};
ss.getRange('D1').setValue(count.length);
}
编辑:所以我的代码实际上做了一些事情,它每次都返回 0...
最佳答案
修改点:
getValues()
检索到的值是二维数组。-
count
被定义为一个数组。但它不用作数组。 -
i 'smaller than' data1.length
是i<data1.length
. - A 列和 B 列的起始行分别为 1、2。
- 包含没有值的单元格。所以当这些单元格相互比较时,值变得相同。 (如果您想比较此类单元格,请从以下脚本中删除
&& abc && def
。)
修改后的脚本:
您的脚本可以通过修改以上几点来编写,如下所示。
function compare() {
var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('theSheetINeed');
var range1 = ss.getRange('A1:A'); //the first column
var data1 = range1.getValues();
var range2 = ss.getRange('B2:B'); //the second column
var data2 = range2.getValues();
var count = []; //to count the number of match
for(var i=0; i<data1.length-1; i++){ //somehow i cant use '<'
var abc = data1[i][0];
var def = data2[i][0];
if(abc == def && abc && def){
count.push(abc);
};
};
ss.getRange('D1').setValue(count.length);
}
如果我误解了你的问题,我很抱歉。
关于javascript - Google Apps 脚本计算 2 列中相同单元格的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714072/