我使用ArrayFormula()
来简化我创建报告的方式。
我不必在每个单元格中创建引用(例如=C1
,=C2
,=C3
,=C4
,而只需使用{{1}在一个单独的单元格中。它完成相同的工作,但更简单,它使事情更有条理,因为我只需要在一个单元格中查找可能的错误。
当我必须将一个范围引用到另一个范围时,如将C1:C4的值引入A1:A4范围,它的效果很好。在A1单元格中,我只想写=arrayformula(C1:C4)
,它就是它的魔力。
当范围长度不同时确实有点棘手,但它仍然可行。例如,如果我想在B1:B3之上堆叠两个或更多范围链接C1:C4,则在单元格A1上我可以写=arrayformula(C1:C4)
。
我的问题是使用=arrayformula({C1:C4;B1:B3})
复制重复模式。例如,如果我想复制单元格C1的内容4次,我会使用arrayFormula()
。
这将起作用并将达到预期的效果。但是,我想知道是否有更好的方法来做到这一点。像=arrayformula({C1;C1;C1;C1})
这样的模式会重复12次。这也使我能够使用动态公式,例如=arrayformula({C1}*12)
,其中模式将根据某个变量重复。
你是否有任何关于如何使用原生公式(没有javascript)实现这一目标的想法?
答案 0 :(得分:15)
我会使用split()函数而不是arrayformula()和rept()函数来重复单元格位置。例如,如果你的n = 4,公式将如下所示:
=split(rept(C1&";",4),";")
rept()重复单元格位置C1 +分号四次创建一个字符串,split()函数将分号创建的字符串除以水平单元格。
您可以使用transpose()函数将生成的水平表旋转到垂直表:
=transpose(split(rept(C1&";",4),";"))
是的,您可以在arrayformula()函数的帮助下使用它来创建动态公式:
=arrayformula(count(D:D)*split(rept(C1&";",4), ";"))
答案 1 :(得分:4)
对于N行M列的“文本”:
=ARRAYFORMULA("text"&T(SEQUENCE(N_rows,M_columns)))
对于N行和M列的数字123:
=ARRAYFORMULA(123+0*SEQUENCE(N_rows,N_columns))
答案 2 :(得分:1)
=arrayformula(count(D:D)*split(rept(C1&";",4), ";"))
当C1包含文本值时,此方法将无效。
我想出了一种变体,可以动态地重复/填入与另一列内容一致的文本值:
=arrayformula(transpose(split(rept("TEXT|",counta(D:D)), "|")))