繁体   English   中英

EXCEL:如何根据总和小于X且不大于Y自动创建组

[英]EXCEL: How to automatically create groups based on sum being less than X and not greater than Y

我在 Excel 中有一些信息的表格,主要列是重量(以 KG 为单位)。 我需要 Excel 将行分组,其中每组的重量总和(以 KG 为单位)小于 24000 公斤且大于 23500 公斤。 手动执行此操作非常耗时,因为有数千行具有不同的权重值。

表格示例:

身份证 | 重量(公斤)
1 | 11360
2 | 22570
3 | 10440
4 | 20850
5 | 9980
6 | 9950
7 | 19930
8 | 9930
9 | 9616
10 | 9580
... 等等

我最接近解决问题的是添加 3 个新列:Total、Starts Group 和 Group Number。

总函数:=IF(SUM(B3+C2)>24000,B3,SUM(B3+C2)) - 计算当前组中权重值的当前总和
启动组功能: =IF(SUM(B3+C2)>24000,B3,SUM(B3+C2)) - 检查当前行是否构成新组
组号函数:=IF(D3,E2+1,E2) - 所有包含相同编号的行都在同一个组中

这样做的问题是它也不会创建大于 23500 的组,而只会创建小于 2400 kg 的组。

它不必在 Excel 中,任何应用程序/脚本也可以工作,它只需要完成工作。

期望的输出:
身份证 | 重量 (KG) | 组 ID
1 | 11360 | 1
2 | 2570 | 2
3 | 10440| 1
4 | 20850 | 2
5 | 180| 2
6 | 1950 | 1

所以我想得到类似于这些的组:
组号 1 - 总重量 23750kg
第 2 组 - 总重量 2360kg

带有我添加的函数的示例表的 URL:
https://1drv.ms/x/s!Au0UogL2uddbgTFJJ4TzSKLhPFPE?e=r02sPX

您可能想尝试一下:

=IF(SUM(B3+C2)>24000;B3;IF(SUM(B3+C2)<=23500;SUM(B3+C2);B3))

编辑:

我刚刚看到您将提案粘贴到您的示例文件中。 您可能需要更换; ,由于区域格式设置。

限制仍然存在:

第一优先级是 <24k,第二优先级是 >=23.5k 如果下一行的值使“跳跃”高于 24k,您最终可能会保持在 23.5k 以下并切换到下一组

编辑2:

在尝试在 Excel 中实现组合问题之前,您可能需要查找一些优化模型和算法。

或者尝试使用简单的规则,例如对您的行进行分类,例如超过 20k、16k、12k、8k、4k、2k、1k、500 等的重量,并尝试相应地对它们进行分组/组合

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM