google-sheets - Google Sheet:如何使用 arrayformula 将数据从一张表复制到另一张表?
问题描述
在 Google 电子表格中,我想将 sheet1 中的 A2:G500 同步到 sheet2,我知道以下两种方法:
使用
IMPORTRANGE
:将以下公式放入sheet2的A1中:=IMPORTRANGE("电子表格网址",sheet1!A2:G500)
它有效,但感觉好像我做得过火了,此外似乎存在性能问题
- 在 sheet2 的 A2 中,放入公式
=sheet1!A2
,然后将公式拖到 sheet2 中的 G500 处。这是一个直观且简单的操作。但是,如果 sheet1 是表单响应表,则它不起作用 - 添加新响应时,sheet2 不会自动获取它。
出于学习目的,我想知道是否有办法使用Arrayformula
. 此外,我想找到一种方法让这种同步更加轻松,这意味着如果有不确定的数据行,我不必时不时地回到这张表并更改公式或手动拖动公式。这可能吗?并且是Arrayformula
实现此目的的正确方法吗?
解决方案
我会推荐一个{ 数组表达式 },如下所示:
={ Sheet1!A2:G }
这或多或少与
=arrayformula(Sheet1!A2:G)
...但我更喜欢这种{}
语法,因为它允许您指定不相邻的列。例如,您可以跳过列D
,F
如下所示:
={ Sheet1!A2:C, Sheet1!E2:E, Sheet1!G2:G }
在区域设置使用逗号作为小数点而不是句点的电子表格中,使用反斜杠\
而不是逗号作为水平分隔符。
要跳过行,请使用分号;
作为垂直分隔符。例如,您可以2:9
像这样跳过行:
={ Sheet1!A1:G1; Sheet1!A10:G }
开放式范围引用的A10:G
意思是“从第 2 行开始并一直延伸到工作表底部的 A 到 G 列”。
您还可以省略行号以获得开放式范围引用A:G
,例如“从工作表的最顶部到底部的 A 到 G 列”。此引用的行为与几乎所有情况下的行为相同A1:G
。我已经养成了始终在参考中包含起始行的习惯,因为这样,如果在第 1 行上方插入一行,公式将自动调整。
当源表是表单响应表时,需要另一种策略。表单响应始终插入到无法提前直接引用的新创建的行中。
为避免在将表单响应动态复制到另一张工作表时调整范围参考,请从第 1 行开始复制,如下所示:
={ 'Form Responses 1'!A1:A }
或者,使用数组公式,如下所示:
=arrayformula(
if(
row('Form Responses 1'!A1:A) = 1,
"Enter column header here",
'Form Responses 1'!A1:A
)
)
处理表单响应的更好方法是使用query()函数将数据直接聚合到您需要的任何报告中。
推荐阅读
- jenkins - Jenkins Pipeline - Jenkins SCM 步骤。结帐返回不参考提供的参数的无效数据
- apache-spark - 如何计算包含相同值的间隔(行集)的开始/结束?
- c# - 在没有子数组 Linq 的情况下返回孩子和子孩子
- jaspersoft-studio - 了解项目组织和基本术语
- twitter-bootstrap-3 - 如何增加docfx文章页面的宽度(基于默认主题)?
- javascript - 如何在 react-native 应用程序中检查 esim 资格?
- javascript - 获取返回先前的响应
- nuxt.js - 需要专业的帮助!运行 npm run dev 时出错
- angular - 过滤后无法刷新角度数据表?
- c# - 如何将序列化对象从编辑器脚本传递到编辑器窗口脚本?