0

下面的查询逐行“工作”(手动填写时),但当新数据添加到“回复表”时,它不会“自动填写”。添加到“回复表”的数据来自 Google 表单。

=QUERY(Sheet2!$A$1:K; CONCATENATE("SELECT B, C WHERE A = ", responses!B1), 0)

问题
- 如何调整此查询,以便在 Google 表单将新数据添加到“回复表”时“自动填充”?

如果这不可能,有什么建议吗?

这是我正在使用的 Google 电子表格的链接

感谢您的时间和帮助,
托德
高中老师

4

2 回答 2

2

另一种选择是使用VLOOKUP 作为数组公式应用。这将在提交表单时自动填充列。所以在第2行:

=ArrayFormula(IFERROR(VLOOKUP(B2:B;Sheet2!A2:C;SIGN(ROW(B2:B))*{2,3};0)))

或者您可以在第 1 行中输入它,这也将填充标题,并且在某些情况下插入/删除行时会更加紧密:

=ArrayFormula(IF(ROW(A:A)=1;{"First Name","Last Name"};IFERROR(VLOOKUP(B:B;Sheet2!A2:C;SIGN(ROW(B:B))*{2,3};0))))

于 2013-11-13T22:16:04.267 回答
0

解决此问题的一种方法是使用Google App Script (GAS)

可以设置一个 onEdit 函数,在添加新数据时将公式添加到所需的单元格中。

使用非常快速的代码(如下)。这将在电子表格更新时应用您的公式。

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("responses");
  var lastRow = ws.getLastRow();
  var studentID = ws.getRange(lastRow, 4).setFormula('=QUERY(Sheet2!$A$1:K; CONCATENATE("SELECT B, C WHERE A = ", responses!B'+lastRow+'), 0)');
}

我已经复制了您的电子表格并在此处设置 -> LINK您只需将新的学生 ID 复制到 B 列即可对其进行测试,然后查看学生信息是从第二张表中提取的。

于 2013-11-12T21:11:37.767 回答