表格:将数字分成 4 组和 3 组
Sheets: Split number into groups of 4 and 3
我想弄清楚(如果可能的话)在一个单元格中取一个数字并确定为 4 组 and/or 3。
(假设:任何提醒都不会少于3人)
即
15 people > groups of 4 = 3, groups of 3 = 1
20 people > groups of 4 = 5, groups of 3 = 0
22 people > groups of 4 = 4, groups of 3 = 2
27 people > groups of 4 = 6, groups of 3 = 1
人数
27
组中的人
组数
4
6
3
1
尝试:
单元格 D2:
=QUOTIENT(A2, C2)
D3 单元格:
=IF(A2-(C2*D2)>=3, QUOTIENT((A2-(C2*D2)), C3), 0)
假设 A2
包含人数,C2
包含较大的允许组人数,C3
包含较小的允许组人数,试试这个:
D2:
=(A2 - D3 * C3) / C2
D3:
=arrayformula(
min(
(A2 >= C3) * mod(A2, C2) * quotient(A2, C3),
iferror( 1 / ( 1 / (
not(mod(A2, C3)) * (A2 / C3)
) ) ),
iferror( 1 / ( 1 / (
not(mod((A2 - sequence(A2 / C3) * C3) / C2, 1))
*
sequence(A2 / C3)
) ) )
)
)
这应该适用于任何人数和任何允许的团体人数,但请注意,并非所有人数都可以表示为只有两种人数的团体。例如,5
不能用 4
和 3
的任意组合表示。在这些情况下,该公式将为较大的组大小提供分数组。
也有一些异常的边缘情况,比如试图将 7
人分成 4
和 2
组,因为奇数的人不能被分成每个组的人数都是偶数。
为了后代,这里有一个更简单的公式版本,只要允许的较小组大小为 6
或更小,它应该可以正常工作:
D3:
=ifs(
not(mod((A2 - 0 * C3) / C2, 1)), 0,
not(mod((A2 - 1 * C3) / C2, 1)), 1,
not(mod((A2 - 2 * C3) / C2, 1)), 2,
not(mod((A2 - 3 * C3) / C2, 1)), 3,
not(mod((A2 - 4 * C3) / C2, 1)), 4,
not(mod((A2 - 5 * C3) / C2, 1)), 5,
true, "insufficient number of cases"
)
当您尝试将 5
分成 4
和 3
组时,这个更简单的公式将给出负数的组,而不是较大的组的分数允许的组大小。
假设您的总“人数”在 A2 中(header“人数”在 A1 中)。
例如,单元格 C1 中的以下公式将生成整个迷你报告:
=ArrayFormula({"People Per Group", "Number in Group";{{4;3},TRANSPOSE(VLOOKUP(A2,VLOOKUP(SORT(UNIQUE(FLATTEN(SEQUENCE(ROUND(200/4)+1,1,0,4)+SEQUENCE(1,4,0,3)))),SORT(SPLIT(FLATTEN((SEQUENCE(ROUND(200/4)+1,1,0,4)+SEQUENCE(1,4,0,3))&"|"&SEQUENCE(ROUND(200/4)+1,1,0)&"|"&SEQUENCE(1,4,0)),"|"),1,1,2,0),{1,2,3},FALSE),{2,3},TRUE))}})
随着总人数的增加,4人组和3人组的可能方式越来越多。这个公式最大化4人组,然后分配3人组。
我写这篇文章是为了处理最多 200
人。但是,如果您需要更多,这是一个简单的调整:您只需将公式中 200
的三个实例中的每一个都更改为 500
或您的最大组可能有多少。
我想弄清楚(如果可能的话)在一个单元格中取一个数字并确定为 4 组 and/or 3。 (假设:任何提醒都不会少于3人)
即
15 people > groups of 4 = 3, groups of 3 = 1
20 people > groups of 4 = 5, groups of 3 = 0
22 people > groups of 4 = 4, groups of 3 = 2
27 people > groups of 4 = 6, groups of 3 = 1
人数 |
---|
27 |
组中的人 | 组数 |
---|---|
4 | 6 |
3 | 1 |
尝试:
单元格 D2:
=QUOTIENT(A2, C2)
D3 单元格:
=IF(A2-(C2*D2)>=3, QUOTIENT((A2-(C2*D2)), C3), 0)
假设 A2
包含人数,C2
包含较大的允许组人数,C3
包含较小的允许组人数,试试这个:
D2:
=(A2 - D3 * C3) / C2
D3:
=arrayformula(
min(
(A2 >= C3) * mod(A2, C2) * quotient(A2, C3),
iferror( 1 / ( 1 / (
not(mod(A2, C3)) * (A2 / C3)
) ) ),
iferror( 1 / ( 1 / (
not(mod((A2 - sequence(A2 / C3) * C3) / C2, 1))
*
sequence(A2 / C3)
) ) )
)
)
这应该适用于任何人数和任何允许的团体人数,但请注意,并非所有人数都可以表示为只有两种人数的团体。例如,5
不能用 4
和 3
的任意组合表示。在这些情况下,该公式将为较大的组大小提供分数组。
也有一些异常的边缘情况,比如试图将 7
人分成 4
和 2
组,因为奇数的人不能被分成每个组的人数都是偶数。
为了后代,这里有一个更简单的公式版本,只要允许的较小组大小为 6
或更小,它应该可以正常工作:
D3:
=ifs(
not(mod((A2 - 0 * C3) / C2, 1)), 0,
not(mod((A2 - 1 * C3) / C2, 1)), 1,
not(mod((A2 - 2 * C3) / C2, 1)), 2,
not(mod((A2 - 3 * C3) / C2, 1)), 3,
not(mod((A2 - 4 * C3) / C2, 1)), 4,
not(mod((A2 - 5 * C3) / C2, 1)), 5,
true, "insufficient number of cases"
)
当您尝试将 5
分成 4
和 3
组时,这个更简单的公式将给出负数的组,而不是较大的组的分数允许的组大小。
假设您的总“人数”在 A2 中(header“人数”在 A1 中)。
例如,单元格 C1 中的以下公式将生成整个迷你报告:
=ArrayFormula({"People Per Group", "Number in Group";{{4;3},TRANSPOSE(VLOOKUP(A2,VLOOKUP(SORT(UNIQUE(FLATTEN(SEQUENCE(ROUND(200/4)+1,1,0,4)+SEQUENCE(1,4,0,3)))),SORT(SPLIT(FLATTEN((SEQUENCE(ROUND(200/4)+1,1,0,4)+SEQUENCE(1,4,0,3))&"|"&SEQUENCE(ROUND(200/4)+1,1,0)&"|"&SEQUENCE(1,4,0)),"|"),1,1,2,0),{1,2,3},FALSE),{2,3},TRUE))}})
随着总人数的增加,4人组和3人组的可能方式越来越多。这个公式最大化4人组,然后分配3人组。
我写这篇文章是为了处理最多 200
人。但是,如果您需要更多,这是一个简单的调整:您只需将公式中 200
的三个实例中的每一个都更改为 500
或您的最大组可能有多少。