Javascript Google应用程序脚本,用于发现Google工作表中两列之间的差异,忽略空白单元格和多个实例

Javascript Google应用程序脚本,用于发现Google工作表中两列之间的差异,忽略空白单元格和多个实例,javascript,excel,google-apps-script,Javascript,Excel,Google Apps Script,我是一名JavaScipt开发新手,在以下情况下需要一些帮助: 我在Google表单中有两列数据(“A列”和“B列”),其中每个单元格都包含产品名称,但“B列”也包含空白单元格(搜索和匹配时,我希望跳过空白单元格),看起来如下所示: “A列”“B列” 问题:我想创建一个搜索和匹配功能,该功能适用于这两列,并从“B列”中找出不在“a列”中的产品,并将其列在第三列,没有空白单元格,每个产品只有一个实例(如果“B列”中有多个名称相同的产品不在“A列”中) 上述示例的结果为: “C列(结果)” 非常

我是一名JavaScipt开发新手,在以下情况下需要一些帮助:

我在Google表单中有两列数据(“A列”和“B列”),其中每个单元格都包含产品名称,但“B列”也包含空白单元格(搜索和匹配时,我希望跳过空白单元格),看起来如下所示:

“A列”“B列”

问题:我想创建一个搜索匹配功能,该功能适用于这两列,并从“B列”中找出不在“a列”中的产品,并将其列在第三列,没有空白单元格,每个产品只有一个实例(如果“B列”中有多个名称相同的产品不在“A列”中)

上述示例的结果为:

“C列(结果)”

非常感谢您的帮助


提前谢谢!

我为你准备了一个脚本

我希望他能为你的项目提供帮助

        function myFunction() {
    var sheet = SpreadsheetApp.openById("id");
    var myArrayA ;
    var myArrayB ;
    var myArrayC ;
    var control = false;
    var controlC = false;
    var indic = 0;
    var i;
    var a;

    var c;
      sheet.getRange("C:C").clear();
       myArrayA = sheet.getRange("A:A").getValues(); 
       myArrayB = sheet.getRange("B:B").getValues(); 
       myArrayC = sheet.getRange("C:C").getValues();


      Logger.log(myArrayA[0][0]);

        for ( i = 0 ; i<= 10 ; i++)
        {

              for ( a = 0 ; a <= 10; a++)
                {

                    if (myArrayB[i][0] == myArrayA[a][0] && myArrayB[i][0] != "")


 {

                  control = true;        
                }           
            }

          if ( control == false )
          {





             for ( b=0; b <= 10 ; b++)
             {
               if ( myArrayC[b][0] == myArrayB[i][0] && myArrayC[b][0] != ""){
                 controlC = true;
               }

             }

             if ( controlC == false){

             myArrayC[indic][0] = myArrayB[i][0];
             indic = indic + 1;
             }


          }

          control = false;
          controlC = false;

    }




  sheet.getRange("D:D").setValues(myArrayC);
}
函数myFunction(){
风险值表=电子表格应用程序openById(“id”);
var myArrayA;
var myArrayB;
var myArrayC;
var控制=错误;
var controlC=假;
var-indi=0;
var i;
var a;
var c;
sheet.getRange(“C:C”).clear();
myArrayA=sheet.getRange(“A:A”).getValues();
myArrayB=sheet.getRange(“B:B”).getValues();
myArrayC=sheet.getRange(“C:C”).getValues();
Logger.log(myArrayA[0][0]);

对于(i=0;i您可以相当轻松地完成此操作,而无需使用内置函数的脚本:

  • 使用a
    VLOOKUP
    在a:a中搜索B:B的实例:

  • 回答这些“这是我的规格,写出来”问题不是一个好主意汉恩,你的脚本为我的问题提供了一个解决方案,尽管它不像我的脚本那样跳过空白单元格。你的解决方案更高效,比我的快得多。如果可以,请再次检查提供的脚本,因为我找不到问题所在空单元格在myArrayC中注册。结果列也包含空单元格…您可以只构建其他数组。将结果复制到不包含空单元格的新数组上。
         Product89
         Product20
         Product15
    
            function myFunction() {
        var sheet = SpreadsheetApp.openById("id");
        var myArrayA ;
        var myArrayB ;
        var myArrayC ;
        var control = false;
        var controlC = false;
        var indic = 0;
        var i;
        var a;
    
        var c;
          sheet.getRange("C:C").clear();
           myArrayA = sheet.getRange("A:A").getValues(); 
           myArrayB = sheet.getRange("B:B").getValues(); 
           myArrayC = sheet.getRange("C:C").getValues();
    
    
          Logger.log(myArrayA[0][0]);
    
            for ( i = 0 ; i<= 10 ; i++)
            {
    
                  for ( a = 0 ; a <= 10; a++)
                    {
    
                        if (myArrayB[i][0] == myArrayA[a][0] && myArrayB[i][0] != "")
    
    
     {
    
                      control = true;        
                    }           
                }
    
              if ( control == false )
              {
    
    
    
    
    
                 for ( b=0; b <= 10 ; b++)
                 {
                   if ( myArrayC[b][0] == myArrayB[i][0] && myArrayC[b][0] != ""){
                     controlC = true;
                   }
    
                 }
    
                 if ( controlC == false){
    
                 myArrayC[indic][0] = myArrayB[i][0];
                 indic = indic + 1;
                 }
    
    
              }
    
              control = false;
              controlC = false;
    
        }
    
    
    
    
      sheet.getRange("D:D").setValues(myArrayC);
    }
    
    =VLOOKUP(B:B,A:A,1,FALSE) =IF(ISERROR(VLOOKUP(B:B,A:A,1,FALSE)),B:B,) =SORT(UNIQUE(IF(ISERROR(VLOOKUP(B:B,A:A,1,FALSE)),B:B,)),1,TRUE)