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)
)
)
),
",$",
)
参考 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)
)
)
),
",$",
)