根据excel vba中的累积总和创建新ID

时间:2015-05-20 13:33:24

标签: vba excel-vba excel

我需要根据正在传输的体积的累积总和创建一个新的传输ID。假设最初所有东西都是用卡车A运输的,容量为25.现在我想将这些物品分配给卡车B(容量15)的货物。

唯一真正的限制是运输不能超过容量。

由于限制,我无法发布图片......但总体设置如下:

Old Trans # Volume  New Trans # Cumulative Volume for Trans

1   1       
1   9       
1   3       
1   7       
1   4       
2   9       
2   10      
3   8       
3   5       
3   9       
4   4       
4   6       
4   8       
5   9       
5   1       
5   5       
5   8       
6   3       
6   4       
6   3       
6   4       
6   4       
6   7       
7   7       
7   10      
7   4       
8   10      
8   6       
8   7       
9   4       
9   9       
9   6       
10  7       
10  4       
10  1       
10  1       
10  5       
10  2       
11  9       
11  3       
11  9       
12  8       
12  5       
12  9       
13  9       

预期输出将是前三个条目将导致新的货件ID为1;接下来的两个条目将导致新的货件ID为2;依此类推......我已经尝试过了我知道的(不包括VBA):索引/查找/如果函数。我的VBA技能非常有限。任何提示?谢谢!

http://i.stack.imgur.com/CsItD.png

2 个答案:

答案 0 :(得分:0)

可以编写一个简单的公式,“浮动”每个连续加载ID的范围总计。

在下文中,我在D1:E1中输入了 25 15 ,并使用了自定义数字格式 I \ D 0 。通过这种方式,可以识别列,并且可以将单元格引用为真正的数字负载限制。如果您愿意通过覆盖 D $ 1 ,您可以将限制硬编码到公式中,但是您不会有一个适合所有公式的公式,可以正确地复制到备用负载限制,因为我有在我的例子..

Floating SUM load limit

D2中的公式是,

=IF(ROW()=2, 1, (SUM(INDEX($B:$B, MATCH(D1, D1:D$1, 0)):$B2)>D$1)+ D1)

根据需要向右填充E2,然后向下填充。

答案 1 :(得分:0)

我想我看到你在这里尝试做什么,只是使用IF公式(并插入一个新列来跟踪):

Example

在C列和D列中,将这些公式插入第3行并向下复制(对于您想要的新卷容量,将其更改为15):

C列:= IF(B3 + C2 <15,B3 + C2,B3)

列D:= IF(B3 + C2 <15,D2,D2 + 1)

对于细胞C2和D2:

C2:= B2

D2:= A2

这是你想要做的吗?