【问题标题】:How to make a range repeat n-times in Google SpreadSheet如何在 Google SpreadSheet 中使范围重复 n 次
【发布时间】:2016-05-04 10:06:12
【问题描述】:

我使用ArrayFormula() 来简化我创建报告的方式。

我不必在每个单元格中创建引用(例如,=C1,=C2,=C3,=C4 在每个单元格中,我只在一个单元格中使用 =arrayformula(C1:C4)。它的作用完全相同工作,但更简单,它使事情更有条理,因为我只需要在一个单元格中查找可能的错误。

当我必须将一个范围引用到另一个范围时,它非常有用,例如将 C1:C4 的值带入 A1:A4 范围。在 A1 单元格中,我只需要写 =arrayformula(C1:C4) 就可以了。

当范围长度不同时,它确实会变得有点棘手,但它仍然是可行的。例如,如果我想在 B1:B3 之上堆叠两个或更多范围链接 C1:C4,我可以在单元格 A1 上写 =arrayformula({C1:C4;B1:B3})

我的问题是使用arrayFormula() 复制重复模式。例如,如果我想复制单元格 C1 的内容 4 次,我会使用 =arrayformula({C1;C1;C1;C1})

这会起作用并且会达到预期的效果。但是,我想知道是否有更好的方法来做到这一点。像=arrayformula({C1}*12) 这样的模式会重复 12 次。这也将使我能够拥有一个动态公式,例如=arrayformula({C1}*count(D:D)),其中模式将根据某个变量重复。

您对如何仅使用本机公式(无 javascript)来实现这一点有任何想法吗?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    另一种方法是使用IFSEQUENCE

    =ARRAYFORMULA(IF(SEQUENCE(4),C1))
    

    序列来之前,有ROW

    =ARRAYFORMULA(IF(ROW(A1:A4),C1))
    

    A1:A4 范围提供 1 到 4 的序列。

    【讨论】:

      【解决方案2】:

      对于N行M列字符串文本

      =ARRAYFORMULA("text"&T(SEQUENCE(N_rows,M_columns)))
      

      对于数字123的N行M列:

      =ARRAYFORMULA(123+0*SEQUENCE(N_rows,M_columns))
      

      【讨论】:

        【解决方案3】:

        我认为您正在寻找的公式是零步序列。

        =sequence(12,1,3,0)
        

        要使其动态化,只需将行数设为变量即可。

        =sequence(count(d:d),1,3,0)
        

        【讨论】:

          【解决方案4】:
          =arrayformula(count(D:D)*split(rept(C1&";",4), ";"))
          

          当 C1 包含文本值时,此方法将不起作用。

          我想出了一个变体,可以动态重复/填写与另一列内容一致的文本值:

          =arrayformula(transpose(split(rept("TEXT|",counta(D:D)), "|")))
          

          【讨论】:

            【解决方案5】:

            我会使用 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), ";"))
            

            【讨论】:

            • 好吧,这个解决方案要求您的数据是文本,并且不包含您使用的分隔符...
            • @Olexa,解决这个问题的简单方法是使用几乎从未输入过的字符,例如¦ 或 ¬,作为分隔符。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-09
            • 2022-01-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-11-12
            相关资源
            最近更新 更多