首页 > 解决方案 > 如何在谷歌工作表上的 2 个工作表之间查找?

问题描述

我想编写一个代码,可以在另一个工作表上的一个工作表基础数据中查找所有数据。我写的代码:

   function myFunction() {
        var as = SpreadsheetApp.getActiveSpreadsheet();   //WorkSheet need to Vlookup 
        var az = SpreadsheetApp.openById("1tnLn-E-03-Pt0ts6x_j-1MzWmuMJ8NyGoX810uk3a0Y");  //Worksheet 's data for vlookup
        var Sheet1 = as.getSheetByName("Sheet 1"); // Sheet need Vlookup
        var Sheet0 = az.getSheetByName("Sheet 0"); // Sheet has data for Vlookup
        var a = Sheet1.getLastRow();
        var b = Sheet0.getLastRow();
        var data = Sheet0.getRange(1,1,a,8).getValue();
        var searchkey = Sheet1.getRange(1,1,b,1).getValue();
          for (var j = 1; j<=b;j++) {
              for (var i = 1; i<=a;i++){
                 if(searchkey[j][0]==data[i][0]);
                      return Sheet1.getRange(j+1,5) = data[i][4]; 
                    //If correct "E4" at Vlookup sheet = "E4" at data sheet
                 } else { 
                 catch(e) // If wrong coutinue next For Loop
                 }
                }
               }    

但它不起作用。我是谷歌应用脚​​本的新手,所以希望你们给我一些关于这种情况的建议。

非常感谢你

标签: javascriptgoogle-apps-scriptmultidimensional-arraygoogle-sheets-formula

解决方案


因为您使用的是标签:google-sheets-formula,所以我使用标准的单行公式提供答案。

假设源工作表 (sheet1) 在 A 列中有键,在 BCD 列中有值

结果表 sheet2 在 A 列中有键,并且您需要第一张表中 BCD 列中的所有相应值。

在 Sheet2 的 B1 中,您写道:

=ifna(arrayformula(vlookup(A:A,Sheet1!A:D,{2,3,4},false)))

=arrayformula(vlookup(A:A,sheet1!A:D,{2,3,4},false))

ifna - 未找到值时留空

arrayformula 中的 vlookup 对整个 A 列进行 vlookup,并尝试找到相应的值

{2,3,4} 是要由 vlookup 显示的列索引列表(来自 Sheet1!A:D 范围)。

最后的 false 意味着您搜索确切的键值

这是 Sheet1 中的源表

在此处输入图像描述

这是你要找的吗?


推荐阅读