ArrayFormula - Number Partitioning row wise - 尝试对所有行使用单列公式

ArrayFormula - Number Partitioning row wise - Attempt to use a single column formula for all rows

参考 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。但是我坚持如何将它应用于整个列(垂直)。有任何想法吗? (最近有人在 Whosebug 向我介绍了 QUERY header smush - 但仍然停留在这个问题上)。

关于 单独的说明 - 我想知道“命名公式”或“公式别名”是否会出现在 Google 表格中。使用这些巨大的 ArrayFormula,重用公式组件将是一个救命稻草。是的 - 我在几年内多次将此查询发送给 Google。

(或者是垂直的?...)救援(公式在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)
        )
    )
  ),
  ",$",
)