使用 IMPORTRANGE 将多个电子表格合并为一个
Combining multiple spreadsheets in one using IMPORTRANGE
我想将多个电子表格的数据汇总到一个电子表格中。
- 电子表格 1 有一行字符串 A2:A500
- 电子表格 2 有一行字符串 A2:A500
- 电子表格 3 应该包含一行(电子表格 1!A2:A500 和电子表格 2!A2:A500)。
重复项不应以不同方式处理。我希望它们出现的频率与它们在不同工作表中出现的频率一样。
是否可以在不编写脚本或使用 jQuery 的情况下执行此操作,例如通过使用 IMPORTRANGE?
什么不起作用: 我试过使用 IMPORTRANGE 如下:
ARRAY{IMPORTRANGE("key-of-spreadsheet1","list!A2:A500"), IMPORTRANGE("key-of-spreadsheet2", "list!A2:A500")}
这会导致错误。
您应该能够在 电子表格 3 中使用垂直数组:
={IMPORTRANGE("Sheet1Key","SheetName!A2:A500");IMPORTRANGE("Sheet2Key","SheetName!A2:A500")}
我也在应用上面给定的公式从多个电子表格中获取数据,该电子表格出现错误,例如 IN ARRAY_LITERAL 数组文字缺少一行或多行的值。
当然,也可以将几个IMPORTRANGE()
函数与QUERY()
函数结合起来,这给了我们一个更大的控制我们导入的结果.
例如我们可以使用这样的构造:
=QUERY(
{
IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100");
IMPORTRANGE("key-or-url-of-spreadsheet-2", "'sheet-name-2'!A2:Z100");
IMPORTRANGE("key-or-url-of-spreadsheet-3", "'sheet-name-3'!A2:Z100");
IMPORTRANGE("key-or-url-of-spreadsheet-4", "'sheet-name-4'!A2:Z100")
},
"SELECT * WHERE Col1 IS NOT NULL ORDER BY Col3 ASC"
)
###解释:
上述查询从导入的范围中删除空行:
SELECT * WHERE Col1 IS NOT NULL
和 对所有收集到的关于第三列的数据进行升序排序:
ORDER BY Col3 ASC
对于降序,只需使用DESC
代替ASC
.
当然,我们也可以安排任何其他条件,或省略它们显示所有内容而不加修改:
"SELECT * "
###注:
为了使用上面构造的查询,我们首先需要为每个要引用的电子表格调用一个IMPORTRANGE()
方法:
=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")
即使我们引用编写此公式的同一个电子表格,我们也必须这样做,但是对于每个电子表格,它足以完成一次。
这是为了能够连接这些工作表并允许访问工作表(我们有访问权限):
给所有电子表格权限后,我们就可以使用上面的查询了
轻松修复:将过滤器应用于整个列/sheet 而不仅仅是当前选择。这将自动更新所有过滤器以包含新添加的内容。
我想将多个电子表格的数据汇总到一个电子表格中。
- 电子表格 1 有一行字符串 A2:A500
- 电子表格 2 有一行字符串 A2:A500
- 电子表格 3 应该包含一行(电子表格 1!A2:A500 和电子表格 2!A2:A500)。
重复项不应以不同方式处理。我希望它们出现的频率与它们在不同工作表中出现的频率一样。
是否可以在不编写脚本或使用 jQuery 的情况下执行此操作,例如通过使用 IMPORTRANGE?
什么不起作用: 我试过使用 IMPORTRANGE 如下:
ARRAY{IMPORTRANGE("key-of-spreadsheet1","list!A2:A500"), IMPORTRANGE("key-of-spreadsheet2", "list!A2:A500")}
这会导致错误。
您应该能够在 电子表格 3 中使用垂直数组:
={IMPORTRANGE("Sheet1Key","SheetName!A2:A500");IMPORTRANGE("Sheet2Key","SheetName!A2:A500")}
我也在应用上面给定的公式从多个电子表格中获取数据,该电子表格出现错误,例如 IN ARRAY_LITERAL 数组文字缺少一行或多行的值。
当然,也可以将几个IMPORTRANGE()
函数与QUERY()
函数结合起来,这给了我们一个更大的控制我们导入的结果.
例如我们可以使用这样的构造:
=QUERY(
{
IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100");
IMPORTRANGE("key-or-url-of-spreadsheet-2", "'sheet-name-2'!A2:Z100");
IMPORTRANGE("key-or-url-of-spreadsheet-3", "'sheet-name-3'!A2:Z100");
IMPORTRANGE("key-or-url-of-spreadsheet-4", "'sheet-name-4'!A2:Z100")
},
"SELECT * WHERE Col1 IS NOT NULL ORDER BY Col3 ASC"
)
###解释:
上述查询从导入的范围中删除空行:
SELECT * WHERE Col1 IS NOT NULL
和 对所有收集到的关于第三列的数据进行升序排序:
ORDER BY Col3 ASC
对于降序,只需使用DESC
代替ASC
.
当然,我们也可以安排任何其他条件,或省略它们显示所有内容而不加修改:
"SELECT * "
###注:
为了使用上面构造的查询,我们首先需要为每个要引用的电子表格调用一个IMPORTRANGE()
方法:
=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")
即使我们引用编写此公式的同一个电子表格,我们也必须这样做,但是对于每个电子表格,它足以完成一次。
这是为了能够连接这些工作表并允许访问工作表(我们有访问权限):
给所有电子表格权限后,我们就可以使用上面的查询了
轻松修复:将过滤器应用于整个列/sheet 而不仅仅是当前选择。这将自动更新所有过滤器以包含新添加的内容。