查询函数的第一部分是要查询的范围。第二部分是要抓住什么。所以我想你可能正在寻找这个:
=QUERY(MASTER!A:T,"SELECT C,D,E,F WHERE T ='Miranda'",0)
并且您不会收到任何列标题,因为 0 表示不使用任何行作为标题。
这将列出 T 为 Miranda 的行的 C、D、E 和 F 列。
编辑:
由于您没有在每个单独的工作表中显示时间戳,因此很难获得单个匹配项,但是只要您的表单中需要,M 列应该是相当安全的检查。
=FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2)
将为 Miranda 选项卡中与 M2 的值匹配的行返回一个单元格数组,从 C 到 F。照原样,它会将这些放在包含公式的列中,以及接下来的 3 列中。要将它们放在一个单元格中,您需要加入它们:
=join("|",FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2))
这将把 | 每个列项目之间的字符。更改“|” 到你想要的样子。
因此,要通过获取单元格 T 的值来完成这项工作,您需要 INDIRECT():
=join("|",FILTER(INDIRECT( T2 & "!C:F"), INDIRECT( T2 & "!C:C")=M2))
另一种选择,特别是如果您在每个选项卡中包含时间戳,将使用 vlookup 来查找时间戳列。但是,使用列 M 可能效果不佳:
=VLOOKUP(M2, INDIRECT( T2 & "!C:F"), 1, FALSE)
由于您使用的是自定义脚本,因此您也可以使用一个来复制公式,因为您不能将 arrayformula() 应用于这些方法中的任何一个。我相信有一些示例脚本可以做到这一点。问题是通过引用另一个单元格来获取范围。我知道这样做的唯一方法是使用 INDIRECT() 函数,它不支持数组。另一种选择是编写一个自定义公式,该公式返回您需要的范围值并使用数组公式。