表格:将数字分成 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 不能用 43 的任意组合表示。在这些情况下,该公式将为较大的组大小提供分数组。

也有一些异常的边缘情况,比如试图将 7 人分成 42 组,因为奇数的人不能被分成每个组的人数都是偶数。

为了后代,这里有一个更简单的公式版本,只要允许的较小组大小为 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 分成 43 组时,这个更简单的公式将给出负数的组,而不是较大的组的分数允许的组大小。

假设您的总“人数”在 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 或您的最大组可能有多少。