【问题标题】:How do I create groups based on the sum of values?如何根据值的总和创建组?
【发布时间】:2016-11-11 08:41:29
【问题描述】:

我找不到类似的东西,也许我找错地方了,因为我在编程方面的知识非常有限,所以任何帮助都将不胜感激。

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

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

所以,我认为这需要发生的顺序是:

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

  2. 当总和达到某个值但未超过该值时,这些行将组合在一起

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

例如:

从这些数据开始:

客户。 │数量。│类型

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

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

此外,如果可能,算法需要足够动态,这样如果我插入、删除或重新排列行,组就会自动更新。

任何帮助、建议或 cmets 将不胜感激。由于需要对大量数据进行排序,因此手动执行此操作非常耗时且繁琐。

提前感谢您的帮助。

【问题讨论】:

  • 这看起来不是很复杂——你试过写东西吗?如果您发布实际代码而不仅仅是对问题的描述,您更有可能在这里获得帮助。
  • 抱歉,我是新来的,我认为我需要做的就是提出问题。但是谢谢你,我会在以后的帖子中记住这一点。

标签: excel sorting functional-programming grouping columnsorting


【解决方案1】:

仅使用 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

【讨论】:

  • 非常感谢您的帮助,非常感谢。
  • 我不得不做一些调整,但它已经启动并运行了。感谢您向我展示了用于解决此问题的正确公式和结构。
  • 很高兴它成功了。您能否将问题标记为“正确”?
猜你喜欢
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多