【问题标题】:Sheets: Split number into groups of 4 and 3表格:将数字分成 4 组和 3 组
【发布时间】:2021-06-09 19:51:58
【问题描述】:

我正在尝试找出(如果可能的话)在单元格中取一个数字并确定为 4 和/或 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  
Number of People
27
People in a Group Number of Groups
4 6
3 1

【问题讨论】:

    标签: google-sheets google-sheets-formula spreadsheet


    【解决方案1】:

    假设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 组时,这个更简单的公式将给出负数的组数,而不是针对更大的允许组大小的小数组。

    【讨论】:

    • D3添加了一个更结构化的公式。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      尝试:

      单元格 D2:

      =QUOTIENT(A2, C2)
      

      单元格 D3:

      =IF(A2-(C2*D2)>=3, QUOTIENT((A2-(C2*D2)), C3), 0)
      

      【讨论】:

      • 谢谢,但我不确定 D2 是否正确。如果将 29 放入 A2,则 D2 应为 5,D3 应为 3。
      • @DevilDog 解释这个系统的解决方案:29除以4人等于7组(7*4=28)。然后 29-28=1 组中少于 3 人,因此 D3 组成 0 组。我知道你希望如何用 (4*5)+(3*3) 解决 29,但如果数字更大,这将是不可能获得理想的组合/配置
      猜你喜欢
      • 2015-02-25
      • 2017-10-04
      • 2012-01-31
      • 2020-05-30
      • 2018-11-17
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多