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
完成后,您可以复制并粘贴为值,然后只需删除每种类型的最后一行以外的所有内容
我是编程新手,一段时间以来一直对这个挑战感到困惑。我怀疑该解决方案将涉及嵌套条件 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
完成后,您可以复制并粘贴为值,然后只需删除每种类型的最后一行以外的所有内容