【发布时间】:2015-03-27 23:17:37
【问题描述】:
我在谷歌表格中有一个用于整个列的数组公式,例如C1中的以下公式
ArrayFormula(A1:A+B1:B)
并且A列和B列都有数据。
如果我要抓取一排并将其移动到另一个位置。只要我移动它,该行 C 列中的相应值就会被粘贴为硬值并破坏整个数组公式。
有没有办法解决这个问题?
【问题讨论】:
标签: google-spreadsheet-api array-formulas
我在谷歌表格中有一个用于整个列的数组公式,例如C1中的以下公式
ArrayFormula(A1:A+B1:B)
并且A列和B列都有数据。
如果我要抓取一排并将其移动到另一个位置。只要我移动它,该行 C 列中的相应值就会被粘贴为硬值并破坏整个数组公式。
有没有办法解决这个问题?
【问题讨论】:
标签: google-spreadsheet-api array-formulas
不幸的是,没有简单的解决方法。对于数组,公式通常与值的位置相关联,因为结果会根据数组中每个值的位置而变化。因此,移动任何东西都会导致公式失真。
解决它的唯一(简单)方法是通过剪切复制粘贴方法移动您的值,而不是拖动整行。或者(对于更强大但更复杂的实现)在您的工作表中为 Custom Functions 编写一个脚本,该脚本将执行必要的计算,并且在您移动值时不会受到影响,因为它从预先定义的单元格位置获取输入脚本。
【讨论】:
找到解决方法。
我正在进行手动排序,这改变了我的 ARRAYFORMULA() 的行,但与拖放“特殊行”的结果相同。
但是,您将不得不使用两张纸。
假设在您的原始数据表(sheet 1)中,您在两列(A 和 B)上有数据,并且您想在 C 列上使用 ARRAYFORMULA(),例如在你的例子中。
保持sheet 1“原样”,创建另一个工作表(sheet 2)并在左上角的单元格中输入:
={A1:B}
在工作表 2 的 C 列,顶部下方的一个单元格(为页眉留出空间),输入:
=ARRAYFORMULA(A2:A+B2:B)
然后您可以在 sheet 1 中对数据进行任意排序,ARRAYFORMULA() 将始终在 sheet 2 中工作 ?
【讨论】: