谷歌表的QUERY功能的加入单元格

问题描述 投票:0回答:1

例如,我有下一个表。我想查询所有有第一个单元格 "Computer "的值,我试过QUERY公式 "QUERY(A1,B3; "select B where A = 'Computer'")",但它只返回第一个B值--键盘。我已经尝试了QUERY公式 "QUERY(A1,B3; "select B where A = 'Computer'")",但它只返回第一个B值--键盘。

是否可以返回所有值?谢谢。

example

google-sheets google-sheets-query
1个回答
0
投票

我理解,你想读取一个像你发布的那样由不同片段组成的表格,如果在左列发现匹配,脚本就需要返回右列的内容。如果我的假设不正确,请原谅我。一个初始表的例子可以像这样。

Initial table

在这个例子中,我们将返回包含以下内容的行: PRAESENT 在第一列中。在这种情况下,你可以使用下面的Apps Script。

function so61913445() {
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var matchData = [];
  var indexColumn = 0; // Column A
  var targetIndex = "PRAESENT";

  for (var r = 0; r < data.length; r++) {
    for (var c = 0; c < data[0].length; c++) {
      if (c == indexColumn && data[r][c] == targetIndex) {
        matchData.push(sheet.getRange(r + 1, c + 2, 3, 1).getValues());
      }
    }
  }

  for (var r = 0; r < matchData.length; r++) {
    for (var c = 0; c < matchData[0].length; c++) {
      sheet.appendRow(matchData[r][c]);
    }
  }
}

在代码中,第一步是声明一些变量来读取工作表(使用的方法是 SpreadsheetApp.getActive()Spreadsheet.getActiveSheet())、数据(与 Sheet.getRange()Range.getValues() 方法)和一些设置,比如要匹配的目标词。之后,代码会对数据进行迭代,如果找到了目标词,代码会将右侧列的内容添加到最后的数组中。最后,代码会重复迭代,将数据写在表的正下方,用 Sheet.appendRow(). 最后的结果会是这样的。

Final table

如果你还需要帮助,请问我任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.