如何在 Google 表格中使用特定的 headers 查询多个文档?
How to query several documents by using specific headers in Google Sheets?
我有几本工作簿,每本都包含我长期以来进行的各种调查和问卷的形式结果。我想要完成的是通过匹配所有这些文档中的 headers 来只导入特定的列。例如,我想收集所有选择时事通讯的英语受访者的电子邮件。
以下是我想统一成一个 sheet:
的示例
- 工作簿 1 > Sheet X > B 列(电子邮件)、E 列(语言)、X 列(通讯)
- 工作簿 1 > Sheet Y > B 列(电子邮件)、C 列(语言)、G 列(通讯)
- 工作簿 2 > Sheet Z > A 列(电子邮件)、C 列(语言)、J 列(通讯)
- 等等
结果应该类似于工作簿 3 > Sheet X >
query({Workbook 1(Sheet!Range); Workbook 2(Sheet!Range)},"SELECT Email WHERE Language='English' AND Newsletter='Yes'"
来自指定的工作簿和 sheets.
我已经想通了如何使用
从外部 sheet 导入数据
=query(importrange(URL, Sheet!Range), Query)
并使用以下技巧成功匹配 headers:
=QUERY(data!A:X,"SELECT "&SUBSTITUTE(ADDRESS(1,MATCH("Email addres",data!A1:X1,0),4),1,""))
,但仅限于同一工作簿。
我尝试将这些组合起来,但 运行 出现了各种错误。我怎样才能达到预期的效果?
查看 3 个电子表格的示例,其中第 1 行包含 headers,每个电子表格包含所有 3 列:
=INDEX(QYERY({
TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(IMPORTRANGE("id1", "sheetname!A1:Z"))),
"where Col1 matches 'Email|Language|Newsletter'", 0));
TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(IMPORTRANGE("id2", "sheetname!A1:Z"))),
"where Col1 matches 'Email|Language|Newsletter'", 0));
TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(IMPORTRANGE("id3", "sheetname!A1:Z"))),
"where Col1 matches 'Email|Language|Newsletter'", 0))},
"where Col1 is not null", 0)
我有几本工作簿,每本都包含我长期以来进行的各种调查和问卷的形式结果。我想要完成的是通过匹配所有这些文档中的 headers 来只导入特定的列。例如,我想收集所有选择时事通讯的英语受访者的电子邮件。 以下是我想统一成一个 sheet:
的示例- 工作簿 1 > Sheet X > B 列(电子邮件)、E 列(语言)、X 列(通讯)
- 工作簿 1 > Sheet Y > B 列(电子邮件)、C 列(语言)、G 列(通讯)
- 工作簿 2 > Sheet Z > A 列(电子邮件)、C 列(语言)、J 列(通讯)
- 等等
结果应该类似于工作簿 3 > Sheet X >
query({Workbook 1(Sheet!Range); Workbook 2(Sheet!Range)},"SELECT Email WHERE Language='English' AND Newsletter='Yes'"
来自指定的工作簿和 sheets.
我已经想通了如何使用
从外部 sheet 导入数据=query(importrange(URL, Sheet!Range), Query)
并使用以下技巧成功匹配 headers:
=QUERY(data!A:X,"SELECT "&SUBSTITUTE(ADDRESS(1,MATCH("Email addres",data!A1:X1,0),4),1,""))
,但仅限于同一工作簿。
我尝试将这些组合起来,但 运行 出现了各种错误。我怎样才能达到预期的效果?
查看 3 个电子表格的示例,其中第 1 行包含 headers,每个电子表格包含所有 3 列:
=INDEX(QYERY({
TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(IMPORTRANGE("id1", "sheetname!A1:Z"))),
"where Col1 matches 'Email|Language|Newsletter'", 0));
TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(IMPORTRANGE("id2", "sheetname!A1:Z"))),
"where Col1 matches 'Email|Language|Newsletter'", 0));
TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(IMPORTRANGE("id3", "sheetname!A1:Z"))),
"where Col1 matches 'Email|Language|Newsletter'", 0))},
"where Col1 is not null", 0)