【问题标题】:ArrayFormula - Number Partitioning row wise - Attempt to use a single column formula for all rowsArrayFormula - Number Partitioning row wise - 尝试对所有行使用单列公式
【发布时间】:2022-02-16 14:56:25
【问题描述】:

参考link

问题描述。从 CSV 字符串 ("10,13,25,17") 中,每个数字被分区 X 次,使得总和等于原始数字。只对平均数量感兴趣。

例如:10 分区 3 = { 3,3,4 },15 分区 2 = { 7,8 },10 分区 2 = { 5, 5 }

所以输入到输出(JOIN-ed)看起来像 ==>

Part("22,25,30",12) = "1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,3,3,3,3,3,3"

我已经成功创建了上面的 ArrayFormula。但是我坚持如何将它应用于整个列(垂直)。有任何想法吗? (最近 StackOverflow 中的某个人向我介绍了 QUERY header smush - 但仍然坚持这一点)。

单独说明 - 我想知道“命名公式”或“公式别名”是否会出现在 Google 表格中。使用这些巨大的 ArrayFormulas 重用公式组件将是救命稻草。是的 - 几年来我已经多次向 Google 发送过这个查询。

【问题讨论】:

    标签: google-sheets array-formulas


    【解决方案1】:

    Horizontal query smash(或者是垂直的?...)救援(公式在D10):

    =ARRAYFORMULA(
      IF(
        A10:A = "",,
          REGEXREPLACE(
            TRANSPOSE(QUERY(TRANSPOSE(
              IF(
                SPLIT(A10:A, ",") = "",,
                    REPT(
                      INT(SPLIT(A10:A, ",") / Months) & ",",
                      Months - MOD(SPLIT(A10:A, ","), Months)
                    )
                  & REPT(
                      INT(SPLIT(A10:A, ",") / Months) + 1 & ",",
                      MOD(SPLIT(A10:A, ","), Months)
                    )
              )
            ),, 10^7)),
            "\s+|,\s*$",
          )
      )
    )
    


    请注意,您的原始解决方案已被简化并在此处使用。简化的原始解决方案在B3

    =REGEXREPLACE(
      CONCATENATE(
        ArrayFormula(
            REPT(
              INT(SPLIT(A2, ",") / Months) & ",",
              Months - MOD(SPLIT(A2, ","), Months)
            )
          & REPT(
              INT(SPLIT(A2, ",") / Months) + 1 & ",",
              MOD(SPLIT(A2, ","), Months)
            )
        )
      ),
      ",$",
    )
    

    【讨论】:

    • 谢谢伙计。我看到 QUERY() 在这些类型的情况下是救命稻草。干得好。
    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2021-06-11
    相关资源
    最近更新 更多