例如,我有下一张桌子。我想查询所有具有第一个单元格“ Computer”的值。我尝试使用QUERY公式“ QUERY(A1,B3;“选择B,其中A ='计算机'”)“,但它仅返回第一个B值-键盘。
是否可以返回所有值?谢谢。
答案 0 :(得分:0)
我了解您想读取一张由不同部分组成的表,就像您发布的表一样,如果在左列找到匹配项,脚本将需要返回右列的内容。如果我的假设不正确,请原谅我。初始表示例如下所示:
在示例中,我们将返回第一列中包含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()
将数据写入表的正下方。最终结果将如下所示:
请问我是否有需要帮助的任何问题。