Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2925|回复: 12

[已解决]如何在一个单元格中合并元器件标号

[复制链接]
发表于 2013-10-26 00:37 | 显示全部楼层 |阅读模式
如图所示
主要为器件标号合并,连续序号的只写起始和终止两个序号,中间用“-”连接
请大家给个思路吧,谢谢
最佳答案
2013-10-28 08:11
没考虑这种情况,不过这容易,添加一句即可:
Sub TEST()
    ARR = Range("B2:B" & Range("B65536").End(3).Row)
    ReDim BRR(1 To UBound(ARR))
    For I = 1 To UBound(ARR)
        C = Split(ARR(I, 1), " ")
        M = C(0)
        For J = 1 To UBound(C)
            If Right(C(J), Len(C(J)) - 1) * 1 <> Right(C(J - 1), Len(C(J - 1)) - 1) * 1 + 1 Then
                If BS = 1 Then
                    M = M & "-" & C(J - 1) & " " & C(J)
                    BS = 0
                Else
                    M = M & " " & C(J)
                End If
            Else
                If J = UBound(C) Then M = M & "-" & C(J)
                BS = 1
            End If
        Next
        ARR(I, 1) = M
    Next
    Range("C2:C65536").ClearContents
    Range("C2").Resize(UBound(ARR), 1) = ARR
End Sub
2013-10-26 0-35-57.png
发表于 2013-10-26 01:40 | 显示全部楼层
回复

使用道具 举报

发表于 2013-10-26 10:19 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-10-26 16:46 | 显示全部楼层
本帖最后由 braveboys 于 2013-10-26 16:47 编辑

给个例子把,或者说下思路也行,附件是测试文件,谢谢

test.rar

6.5 KB, 下载次数: 6

回复

使用道具 举报

发表于 2013-10-26 17:29 | 显示全部楼层
你这个好像没有规律可言的啊,
回复

使用道具 举报

 楼主| 发表于 2013-10-26 20:02 | 显示全部楼层
yuan1987 发表于 2013-10-26 17:29
你这个好像没有规律可言的啊,

最早的那个帖子能看出来规律的,有图有真像,谢谢哈
回复

使用道具 举报

发表于 2013-10-27 09:10 | 显示全部楼层
本帖最后由 zjdh 于 2013-10-27 09:14 编辑
braveboys 发表于 2013-10-26 20:02
最早的那个帖子能看出来规律的,有图有真像,谢谢哈


test.rar (10.08 KB, 下载次数: 5)
回复

使用道具 举报

发表于 2013-10-27 09:56 | 显示全部楼层
本帖最后由 silenthunter 于 2013-10-27 09:58 编辑

.....................
回复

使用道具 举报

 楼主| 发表于 2013-10-27 23:21 | 显示全部楼层
zjdh 发表于 2013-10-27 09:10

十分感谢。
我终于大致知道怎么处理了,不过为啥如果添加一行D1 D2 D3,合并完就剩下D1了呢,我跟踪了一下,没有发现啥问题,就是进不到执行添加“-”的语句中
回复

使用道具 举报

发表于 2013-10-28 08:11 | 显示全部楼层    本楼为最佳答案   
没考虑这种情况,不过这容易,添加一句即可:
Sub TEST()
    ARR = Range("B2:B" & Range("B65536").End(3).Row)
    ReDim BRR(1 To UBound(ARR))
    For I = 1 To UBound(ARR)
        C = Split(ARR(I, 1), " ")
        M = C(0)
        For J = 1 To UBound(C)
            If Right(C(J), Len(C(J)) - 1) * 1 <> Right(C(J - 1), Len(C(J - 1)) - 1) * 1 + 1 Then
                If BS = 1 Then
                    M = M & "-" & C(J - 1) & " " & C(J)
                    BS = 0
                Else
                    M = M & " " & C(J)
                End If
            Else
                If J = UBound(C) Then M = M & "-" & C(J)
                BS = 1
            End If
        Next
        ARR(I, 1) = M
    Next
    Range("C2:C65536").ClearContents
    Range("C2").Resize(UBound(ARR), 1) = ARR
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 19:06 , Processed in 1.039496 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表