如何根据值的总和创建组?

时间:2016-07-08 17:30:16

标签: excel sorting functional-programming grouping columnsorting

我还没有能够找到这样的东西,也许我找错了地方,因为我对编程的知识非常有限,所以任何帮助都会受到赞赏。

如果有一种方法可以在Microsoft Excel中执行此操作,而不需要更好的代码,但如果需要代码,那么请告诉我代码是什么或者我自己如何编写代码来帮助我。

我需要能够根据单个列中值的总和创建单独的行组。这可以通过插入" Total"达到设定求和值后的行或通过对达到该求和值的每个组进行颜色编码。

所以,我看到这需要发生的顺序是:

  1. 在多列表的一列中,按顺序对行进行求和(如果可能,从我选择的行开始)

  2. 一旦总和达到某个值,但不超过该值,这些行就会组合在一起

  3. 这发生在表的整个长度上,根据尽可能接近设定值的行总和创建单独的组

  4. 例如:

    从这些数据开始:

    卡斯特。 │数量│类型

    A│ 2 │L

    B│ 4 │XL

    C│ 4 │M

    D│ 9 │S

    E│ 1 │L

    F│ 9 │M

    G│ 10 │L

    H│ 1 │L

    我│ 1 │XL

    J│ 5 │L

    K│ 1 │M

    L│ 5 │S

    M│ 4 │S

    N│ 2 │S

    将数量相加并根据值10进行检查,然后进行相应分组:

    卡斯特。 数量。类型

    A│ 2 │L

    B│ 4 │XL

    C│ 4 │M

    │**Total: 10**│ 
    

    D│ 9 │S

    E│ 1 │L

    │**Total: 10**│ 
    

    F│ 9 │M

    │**Total: 9**│
    

    G│ 10 │L

    │**Total: 10**│ 
    

    H│ 1 │L

    我│ 1 │XL

    J│ 5 │L

    K│ 1 │M

    │**Total: 8**│
    

    L│ 5 │S

    M│ 4 │S

    │**Total: 9**│  
    

    N│ 2 │S

    ...等

    或者通过颜色编码不同的组:

    Color Coded Groups

    数据表不断变化,删除旧行,添加新行。拉出信息后,该表是静态的,因此每次提取更新数据时,我都需要能够轻松应用此表。

    此外,如果可能,算法需要足够动态,以便插入,删除或重新排列组自动更新的行。

    非常感谢任何帮助,建议或评论。由于需要对大量数据进行排序,手动执行此操作非常耗时且繁琐。

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

仅使用excel的一个解决方案是:

1)在表格中添加三个附加列:“Total”,“Starts Group”和“Group Number”。因此该表有5列:

客户数量类型总计开始组组编号

2)在标题和数据行之间添加一个空行 - 这将使制作和维护公式更容易。

3)在第三行,即具有实际数据的第一行(A | 2 | L),为三个新列添加以下公式:

"Total" -> =IF(SUM(B3+D2)>10,B3,SUM(B3+D2))
"Starts Group" -> =IF(SUM(B3+D2)>10,TRUE,FALSE)
"Group Number" -> =IF(E3,F2+1,F2)

4)“组号”列包含您需要的信息。您可以使用该值对行进行颜色编码。此外,该表应该是完全动态的 - 您可以根据需要添加/删除行,它将被重新计算。

所以你的具体例子如下:

OrderID  Contract  Price  BuySell  OrderType  Quantity
1        ZS        10914  Buy                        6
2        ZS        10916  Buy                        4
3        ZL         3188  Sell                       9
4        ZM         3981  Sell                       9
5        ZM         3985  Sell                       2
6        ZS        10914  Buy                       10
7        ZL         3186  Sell                       9
8        ZM         3982  Sell                      11
9        ZS        10910  Buy                        2
10       ZS        10911  Buy                        4
11       ZS        10913  Buy                        2
12       ZS        10914  Buy                        4
13       ZL         3184  Sell                       9
14       ZM         3983  Sell                      11
15       ZS        10926  Buy                       10
16       ZL         3184  Sell                       9
17       ZM         3983  Sell                      11
18       ZS        10926  Buy                       10
19       ZL         3184  Sell                       9
20       ZM         3983  Sell                      11