Google表格QUERY功能用于连接的单元格

时间:2020-05-20 12:43:53

标签: google-sheets google-sheets-query

例如,我有下一张桌子。我想查询所有具有第一个单元格“ Computer”的值。我尝试使用QUERY公式“ QUERY(A1,B3;“选择B,其中A ='计算机'”)“,但它仅返回第一个B值-键盘。

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

example

1 个答案:

答案 0 :(得分:0)

我了解您想读取一张由不同部分组成的表,就像您发布的表一样,如果在左列找到匹配项,脚本将需要返回右列的内容。如果我的假设不正确,请原谅我。初始表示例如下所示:

Initial table

在示例中,我们将返回第一列中包含PRAESENT的行。在这种情况下,您可以使用以下Apps脚本:

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()和{{3} }方法)和某些设置(例如要匹配的目标单词)。之后,代码将遍历数据,如果找到了目标词,则代码会将右列的内容添加到最终数组中。最后,代码将重复迭代以使用Range.getValues()将数据写入表的正下方。最终结果将如下所示:

Sheet.appendRow()

请问我是否有需要帮助的任何问题。