Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google应用程序脚本计算两列中相同单元格的数量_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript Google应用程序脚本计算两列中相同单元格的数量

Javascript Google应用程序脚本计算两列中相同单元格的数量,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,因此,Im在google电子表格中有两列,A和B,我想逐行比较它们(A1到B1,A2到B2,等等),最后计算具有完全相同值(可以是字符串或整数,但必须相同)的单元格数,并将其放在另一个单元格中,例如D1。这是我到目前为止得到的,但它似乎没有做任何事情,也没有返回任何错误 function compare() { var sss = SpreadsheetApp.getActiveSpreadsheet(); var ss = sss.getSheetByName('theShee

因此,Im在google电子表格中有两列,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);
}
函数比较(){
var sss=SpreadsheetApp.getActiveSpreadsheet();
var ss=sss.getSheetByName('theSheetINeed');
var range1=ss.getRange('A1:A');//第一列
var data1=range1.getValues();
var range2=ss.getRange('B2:B');//第二列
var data2=range2.getValues();
var count=[];//计算匹配数
对于(var i=0;i'小于'data1.length;i++){//不知何故,我无法使用'修改点:
  • getValues()
    检索的值是二维数组
  • count
    定义为数组,但不用作数组

  • i'小于'data1.length
    是需要在后台运行的应用程序脚本的替代方案,您可以使用现成的公式执行此操作,因此结果是实时的

    =SUM(
       QUERY(
         FILTER(A1:B,A1:A<>"",A1:A<>0),
         "Select count(Col1)
            Where Col1=Col2 
            Group By Col1 
            Label count(Col1) ''"
         ,0)
     )
    
    这将执行您要求的比较,并返回a中与B中匹配的每个值的计数。
    Select
    此处使用
    Col1
    而不是
    a
    ,因为
    过滤器
    返回的数组不是a 射程


    从那时起,
    SUM
    将这些总数相加。

    这对我来说很好,谢谢。但它似乎忽略了任何数值,而不仅仅是空单元格。我只是好奇是否有办法计算数字。@User9123我刚刚更新了脚本。我修改了
    if(abc==def&&isNaN(abc)&&isNaN(def)){
    如果(abc==def&&abc&&def){
    请确认。@User9123我很高兴能帮上忙。
    =SUM(
       QUERY(
         FILTER(A1:B,A1:A<>"",A1:A<>0),
         "Select count(Col1)
            Where Col1=Col2 
            Group By Col1 
            Label count(Col1) ''"
         ,0)
     )
    
    FILTER(A1:B, A1:A<>"", A1:A<>0)
    
    "Select count(Col1)
        Where Col1=Col2 
        Group By Col1 
        Label count(Col1) ''"