【问题标题】:Google sheets QUERY function for joined cells用于连接单元格的 Google 表格查询功能
【发布时间】:2020-05-28 14:27:14
【问题描述】:

例如,我有下一张桌子。我想查询所有具有第一个单元格“计算机”的值。我试过 QUERY 公式“QUERY(A1,B3;”select B where A = 'Computer'")" 但它只返回第一个 B 值 - 键盘。

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

【问题讨论】:

  • 嗨@RuslanLeshchenko!我可以编写一个Apps Script 代码,该代码将适用于您的场景。这对您来说是一个有效的解决方案吗?
  • 谢谢,@Jacques-GuzelHeron,我想查询左侧有计算机单元的所有单元(键盘、显示器、鼠标)。

标签: google-sheets google-sheets-query


【解决方案1】:

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

在示例中,我们将返回第一列中包含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()Range.getValues()方法)和一些设置,如要匹配的目标词。之后,代码遍历数据,如果找到目标单词,代码会将右列的内容添加到最终数组中。最后,代码将重复迭代以使用Sheet.appendRow() 将数据写入表下方。最终结果将如下所示:

如果您还需要帮助,请随时问我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多