例如,我有下一个表。我想查询所有有第一个单元格 "Computer "的值,我试过QUERY公式 "QUERY(A1,B3; "select B where A = 'Computer'")",但它只返回第一个B值--键盘。我已经尝试了QUERY公式 "QUERY(A1,B3; "select B where A = 'Computer'")",但它只返回第一个B值--键盘。
是否可以返回所有值?谢谢。
我理解,你想读取一个像你发布的那样由不同片段组成的表格,如果在左列发现匹配,脚本就需要返回右列的内容。如果我的假设不正确,请原谅我。一个初始表的例子可以像这样。
在这个例子中,我们将返回包含以下内容的行: 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()
. 最后的结果会是这样的。
如果你还需要帮助,请问我任何问题。