如何将一列总数分组到一个集合中,每个集合有一个最大值

我有一个logging集合,每个logging有一个总数; 我想把整个集合分成几组,每组只能容纳很多(例如20个)。

到目前为止,我已经考虑过两种方法,下面给出了一个简单的表示:

套是分开的:

  • set1有5 + 10 = 15以来的前两个(接下来的12个将超过20)。
  • 自12 + 7 = 19以来,set2将具有接下来的两个。

我玩的另一个想法就是在源数据集中添加一列:

我试图找出一个简单的方法来完成这个使用公式,如果它更容易在VBA中完成,我会去那条路线。

感谢您的帮助,我一直在考虑这一周,甚至不知道要search什么。

**编辑:我是个白痴。

我不能提出一个公式,但这是一个非常蛮力的方式:

Sub test() Dim i As Long, _ lr As Long, _ sumValue As Long, _ counter As Long lr = Range("A" & Rows.Count).End(xlUp).Row counter = 1 For i = 1 To lr sumValue = sumValue + Range("A" & i) If sumValue <= 20 Then Range("B" & i).Value = counter Else sumValue = 0 counter = counter + 1 i = i - 1 End If Next i End Sub 

对于它的价值,我的结果是有点不同,因为我计算5 + 10 + 12大于20 …

我通过浏览相关部分find答案。

 =IF(A2="a",ROUNDDOWN((B2-1)/20,0)+1,IF(SUMIF($C1:C$2,C1,$B1:B$2)+B2>20,C1+1,C1)) 

这是一个链接到答案。

我会接受@ sous2817的答案,因为这是最有帮助的,而且如果我采用VBA方法的话,会是我所采取的方式。

再次感谢你们!

= ROUNDUP(SUM(R5C [-1]:RC [-1])/ 20,0)
要么
= ROUNDUP(SUM(C $ 5:C5)/ 20,0)公式从D5开始并被拉低。