如何在Google Sheet的Query+Importrange中包含数据源工作表名称?
解决Google Sheets Query+Importrange结果中添加来源工作表名称的问题
不用在关联Forms的工作表里手动加固定列(毕竟新提交的行不会自动填充),直接在Importrange的环节就给结果追加来源表名列,具体操作如下:
对单个工作表的Importrange结果拼接来源列:
把原本的IMPORTRANGE("目标表格ID", "Sheet1!A:Z")改成:{IMPORTRANGE("目标表格ID", "Sheet1!A:Z"), ARRAYFORMULA(IF(ISBLANK(IMPORTRANGE("目标表格ID", "Sheet1!A:A")),, "Sheet1"))}这里用数组语法
{原数据, 新列}把来源表名列拼在后面,ARRAYFORMULA配合ISBLANK只会在原数据有内容的行显示表名,避免空行生成无效内容。合并多个工作表的结果并查询:
如果要从多个关联Forms的工作表取数,用分号;纵向合并每个带来源列的Importrange结果,再套Query过滤和筛选,示例公式:=QUERY( { {IMPORTRANGE("表格ID1", "Sheet1!A:Z"), ARRAYFORMULA(IF(ISBLANK(IMPORTRANGE("表格ID1", "Sheet1!A:A")),, "Sheet1"))}; {IMPORTRANGE("表格ID2", "Sheet2!A:Z"), ARRAYFORMULA(IF(ISBLANK(IMPORTRANGE("表格ID2", "Sheet2!A:A")),, "Sheet2"))}; {IMPORTRANGE("表格ID3", "Sheet3!A:Z"), ARRAYFORMULA(IF(ISBLANK(IMPORTRANGE("表格ID3", "Sheet3!A:A")),, "Sheet3"))} }, "SELECT * WHERE Col1 IS NOT NULL", 1 )说明:
- 分号
;用于纵向合并不同工作表的结果 - Query里的
Col1对应原数据的第一列(通常是Forms的时间戳列),过滤掉空行 - 最后一个参数
1表示原数据有表头,Query会自动识别
- 分号
注意点:
- 首次使用每个
IMPORTRANGE时,需要点击授权按钮允许访问目标表格 - 确保所有Importrange的列数一致,否则会出现合并错误;如果列数不同,可以调整范围统一列数,比如都取到第10列
A:J
- 首次使用每个
内容的提问来源于stack exchange,提问作者Joe Keegan
相关产品推荐
相关产品推荐

