如何为Index工作表现有查询添加来自多模块表的Module #列?
给跨模块查询结果添加Module #列的解决方案
核心思路
要给现有查询结果加上各模块的编号(对应模块表A2单元格的值),需要先为每个模块的数据源新增一列固定的Module #值,再将多模块数据源合并后执行筛选查询。
针对Index!W2的修改公式
假设各模块表中,Standard列在C列、Learner列在D列、Grade列在E列,修改后的查询公式如下:
=QUERY({ ArrayFormula({Module1!A2\Module1!C:C,Module1!D:D,Module1!E:E}), ArrayFormula({Module2!A2\Module2!C:C,Module2!D:D,Module2!E:E}), ArrayFormula({Module3!A2\Module3!C:C,Module3!D:D,Module3!E:E}), ArrayFormula({Module4!A2\Module4!C:C,Module4!D:D,Module4!E:E}) }, "SELECT Col1, Col2, Col3, Col4 WHERE Col4 IN ('No', '0', '1')", 1)
ArrayFormula({ModuleX!A2\...}):为Module X的每一行数据新增第一列,值固定为该模块表A2的编号- 大括号
{}:将四个模块带编号的数据源合并成一个整体 SELECT Col1, Col2, Col3, Col4:选择新增的Module #列,以及原有的Standard、Learner、Grade列WHERE Col4 IN ('No', '0', '1'):保留符合W2原需求的取值- 最后参数
1:表示数据源第一行为表头
针对Index!AJ2的修改公式
只需将筛选条件替换为AJ2的取值要求即可:
=QUERY({ ArrayFormula({Module1!A2\Module1!C:C,Module1!D:D,Module1!E:E}), ArrayFormula({Module2!A2\Module2!C:C,Module2!D:D,Module2!E:E}), ArrayFormula({Module3!A2\Module3!C:C,Module3!D:D,Module3!E:E}), ArrayFormula({Module4!A2\Module4!C:C,Module4!D:D,Module4!E:E}) }, "SELECT Col1, Col2, Col3, Col4 WHERE Col4 IN ('Yes', '2')", 1)
输出到目标工作表
直接在Administrative View和Grade Level Dashboard工作表的目标单元格中,引用Index表中修改后的W2、AJ2单元格即可,例如:
=Index!W2
如果需要直接在目标表中执行查询,也可以将上述公式直接复制到对应工作表的单元格中。
注意事项
- 确保四个模块表的
Standard、Learner、Grade列位置完全一致,避免数据错位 - 若模块表数据是动态更新的,可将固定列范围(如
Module1!C:C)替换为动态范围,比如Module1!C2:INDEX(Module1!C:C,COUNTA(Module1!C:C)),避免包含空行数据
内容的提问来源于stack exchange,提问作者Jarvis Davis
相关产品推荐
相关产品推荐

