Excel VBA连续和非连续数字连接

时间:2016-04-04 22:51:51

标签: excel vba excel-vba string-concatenation

我是编程新手,并且一直困扰着这个挑战。我怀疑该解决方案将涉及嵌套条件和/或用户定义的函数。我有一个类似于这个的表,它在#34;表#"中从最小到最大排序。柱:

QTY Type Sheet#
1    B    1000
5    B    1001
3    B    1002
2    B    1005
7    B    1009
4    B    1010
2    B    1010
3    B    1010
1    B    1011
2    B    1012
6    B    1013
8    B    1013
1    B    1015
1    B    1015
2    B    1016

有几件事需要考虑:有些纸张编号是重复的,有些纸张编号丢失了(例如上面列表中缺少1006到1008)部分纸张编号是连续的,其中一些是重复,然后连续下一张表格编号(如1010,1010,1010,1011)

我需要生成的结果是三个单元格:总数量,字母的翻译(如" B"代表" Beam"以及串联的表格编号如下所示

QTY  Type Sheet#
48   Beams On sheets 1000 to 1002, 1005, 1009 to 1013, 1015 and 1016 

翻译来自" B"到#34; Beams"只有一个案例。我在单独的工作表上有另一个表,列出了所有类型,例如。 B =梁,C =柱,BR =支撑,PS =管道支撑等

非常感谢任何指导。

1 个答案:

答案 0 :(得分:0)

将B:C复制到另一个区域(我放在G:H中)

使用数据标签

下的“删除重复项”功能

在F2中输入:=SUMIF(B:B,G2,A:A)

在I2中加入一个vlookup公式来拉回B或C或其他任何

的含义

在J2中输入以下公式:=IF(G2<>G1,"On sheets " & H2,IF(AND(H2=H1+1,H2=H3-1),J1,IF(H2=H1+1,J1 & " to " & H2,J1 & ", " & H2)))

向下拖动F2,I2和J2。

这是我玩一些测试数据时的样子(没有做vlookup,它对我的​​测试没有影响)

QTY TypeSheet#  
48  B   1000    On sheets 1000
48  B   1001    On sheets 1000
48  B   1002    On sheets 1000 to 1002
48  B   1005    On sheets 1000 to 1002, 1005
48  B   1009    On sheets 1000 to 1002, 1005, 1009
48  B   1010    On sheets 1000 to 1002, 1005, 1009
48  B   1011    On sheets 1000 to 1002, 1005, 1009
48  B   1012    On sheets 1000 to 1002, 1005, 1009
48  B   1013    On sheets 1000 to 1002, 1005, 1009 to 1013
48  B   1015    On sheets 1000 to 1002, 1005, 1009 to 1013, 1015
48  B   1016    On sheets 1000 to 1002, 1005, 1009 to 1013, 1015 to 1016
20  C   1012    On sheets 1012
20  C   1013    On sheets 1012 to 1013
20  C   1015    On sheets 1012 to 1013, 1015
20  C   1016    On sheets 1012 to 1013, 1015 to 1016

完成后,您可以复制并粘贴为值,只需删除除每个类型的最后一行之外的所有行