Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Google apps script 在另一个选项卡中查找单元格_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 在另一个选项卡中查找单元格

Google apps script 在另一个选项卡中查找单元格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,这是一个由多个部分组成的问题:我无法用一个清晰的陈述简洁地解释它。在得到一些反馈后,我会尝试清理它: 在GoogleDocs中,我想搜索另一个选项卡(在同一个电子表格中),以找到包含特定数据的单元格。数据可能会四处移动,从而无法使用静态单元格引用 //如果我的电子表格的“Sheet2”包含以下内容。。。 A、B、C、D 1 - - - - 2-富吧6 3----- //…然后一些神奇的功能会返回C2 =getCell('Sheet2','bar') 现在我们有了这个单元格

这是一个由多个部分组成的问题:我无法用一个清晰的陈述简洁地解释它。在得到一些反馈后,我会尝试清理它:

  • 在GoogleDocs中,我想搜索另一个选项卡(在同一个电子表格中),以找到包含特定数据的单元格。数据可能会四处移动,从而无法使用静态单元格引用

    //如果我的电子表格的“Sheet2”包含以下内容。。。 A、B、C、D 1 - - - - 2-富吧6 3-----

    //…然后一些神奇的功能会返回C2 =getCell('Sheet2','bar')

  • 现在我们有了这个单元格,我想得到同一行中相邻单元格的值

    //这将返回“foo”: =getLeft(getCell('Sheet2','bar'))

    //这将返回6 =getRight(getCell('Sheet2','bar'))

  • 我能够得到满足上述任务的函数。然而,这是痛苦的缓慢!我在大约100多个地方使用这个函数,所以每次我更改某些内容时,计算表都会超时

    有人能建议如何获得相同的功能,但性能更好吗

    function getCell( sheetname, item, row_offset, default_string )
    {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
      var lastrow = sheet.getLastRow();
      var lastcol = sheet.getLastColumn();
      for( var c = 1; c <= lastcol; c++ )
      {
        for( var r = 1; r <= lastrow; r++ )
        {
          var range = sheet.getRange(r, c);
          if( range.getValue() == item )
          {
            //item found! See if we can get the requested cell...
            c = c + row_offset;  //adjust column using given offset
            if( c < 1 || c > lastcol )
              return "E.offset";
            else
              return sheet.getRange(r,c).getValue();
          }
        }
      }
      return default_string;
    }
    
    函数getCell(图纸名称、项目、行偏移量、默认字符串) { var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); var lastrow=sheet.getLastRow(); var lastcol=sheet.getLastColumn();
    对于(var c=1;c您能否在数据范围前添加一行和一列,如下所示:

         A    B    C    D    E    F    G
    1                                  "bar"
    2         -    -    -    -         
    3         -    foo  bar  6
    4         -    -    -    -
    
    您有一个单元格,其中包含您要查找的单元格内容,比如G1。在单元格A2中,您放置公式:

    =COUNTIF(B2:E2,$G$1)
    
    这将检查A行是否与单元格G1上的A匹配。填写A行中的其他单元格,单元格A3将显示“1”

    对单元格B1使用类似的公式:

    =COUNTIF(B2:B4,$G$1)
    
    单元格D1将显示一个1

    然后,使用INDEX()和MATCH()查找任意一侧单元格的内容:

    左:

    对:

    =INDEX($B$2:$E$4,MATCH(1,$A$2:$A$4,0),MATCH(1,$B$1:$E$1,0)+1)
    
    不需要脚本

    =INDEX($B$2:$E$4,MATCH(1,$A$2:$A$4,0),MATCH(1,$B$1:$E$1,0)+1)