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

Excel VBA Consecutive and non-consecutive numbers concatenation

我是编程新手,一段时间以来一直对这个挑战感到困惑。我怀疑该解决方案将涉及嵌套条件 and/or 用户定义的函数。我有一个与此类似的 table,已在 "sheet#" 列中从小到大排序:

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

有几件事需要考虑:一些 sheet 号码重复,一些 sheet 号码丢失(例如上面的列表中缺少 1006 到 1008)一些sheet 号码是连续的,其中一些是重复的,然后与下一个 sheet 号码连续(如 1010、1010、1010、1011)

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

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

从"B"到"Beams"的翻译只是一种情况。我有另一个 table 在单独的作品 sheet 上列出了所有类型,例如。 B = 梁,C = 柱,BR = 支撑,PS = 管道支撑等

非常感谢任何指导。

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

使用数据选项卡下的"Remove duplicates"功能

在 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

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