首页 > 解决方案 > Google表格:将公式复制到列中的所有单元格

问题描述

当我将公式添加到谷歌工作表时,它们工作正常,但是当我添加新行时,公式不会被复制。为了克服这个问题,我找到了公式数组公式。这适用于简单的应用程序,例如在单元格 D4 中添加了以下公式

=ARRAYFORMULA(if(isblank(B4:B), ,B4:B*C4:C))

短数组

但是,当公式稍微复杂一点时,它就会崩溃。

=ARRAYFORMULA(if(and(isblank(B4:B),isblank(C4:C)), ,B4:B*C4:C))

破公式

这仍然是一个非常简单的公式,似乎会出错,而我工作表中的公式通常要复杂得多,例如

=if(Y5="","",filter('World Clock'!B:B,'World Clock'!A:A=Y5))

它读取单元格 Y5 的数据(这是我手动输入的时区的名称)并查找另一个名为“世界时钟”的工作表,其中包含这些时区中当前时间的时区和公式列表并复制该公式到这张表。

复制时间

世界时钟

有谁知道任何公式可以让这个工作?我知道有一种方法可以通过脚本来做到这一点,我相信我自己可以解决这个问题,但是如果我可以得到数组公式或类似的工作会更好,因为我已经有很多脚本在运行这个文件,它开始变慢了。

标签: google-sheetsgoogle-sheets-formulaarray-formulas

解决方案


AND()并且OR()不起作用,ARRAYFORMULA()因为它AND()/OR()在整个数组中执行方法。

如果你想对每个数组进行 AND/OR。使用* = AND()+ = OR()代替。

例子:

和: =ARRAYFORMULA(if(isblank(B4:B)*isblank(C4:C),,B4:B*C4:C))

或者: =ARRAYFORMULA(if(isblank(B4:B)+isblank(C4:C),,B4:B*C4:C))


输出:

在此处输入图像描述


(更新)

如果你想ARRAYFORMULA()在你的FILTER()公式中应用,你可以在试用表中使用这个公式A2

=ARRAYFORMULA(if(B2:B="","",Vlookup(B2:B,'World Clock'!A:B,2,false)))

注意:您需要删除A3以后添加的其他公式,因为它会阻止 arrayformula() 单元格写入。

输出: 在此处输入图像描述


推荐阅读