Excel精英培训网

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

[已解决]在这里显示(J列)的拆分的结果

[复制链接]
发表于 2016-9-24 23:27 | 显示全部楼层 |阅读模式
31619.jpg

在这里显示(J列)的拆分的结果.rar (9.05 KB, 下载次数: 9)
发表于 2016-9-25 00:28 | 显示全部楼层
附件

在这里显示(J列)的拆分的结果.rar

11.63 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2016-9-25 07:49 | 显示全部楼层
回复

使用道具 举报

发表于 2016-9-25 08:31 | 显示全部楼层    本楼为最佳答案   
Sub tt()
    Dim i%
    For i = 5 To [j65536].End(3).Row
      For n = 1 To 4
      Cells(i, n + 11) = Split(Split(Cells(i, "j"), ",")(n - 1), "-")(1)
    Next n, i
End Sub

在这里显示(J列)的拆分的结果.rar

9.07 KB, 下载次数: 8

回复

使用道具 举报

发表于 2016-9-25 08:34 | 显示全部楼层
苏子龙 发表于 2016-9-25 08:31
Sub tt()
    Dim i%
    For i = 5 To [j65536].End(3).Row

用正则啊
回复

使用道具 举报

发表于 2016-9-25 09:14 | 显示全部楼层

练习正则方法
Sub regexp()
    Dim arr, brr, i%, col%
    Dim reg As Object, mh As Object
    Call del
    arr = Range("j5").CurrentRegion
    ReDim brr(1 To UBound(arr) - 1, 1 To 4)
    Set reg = CreateObject("vbscript.regexp")
    With reg
        .Global = True
        .Pattern = "-([^,]+)"
        For i = 2 To UBound(arr)
            Set mh = .Execute(arr(i, 1))
            For n = 1 To 4
                brr(i - 1, n) = mh(n - 1).submatches(0)
        Next n, i
    End With
    Range("l5").Resize(UBound(brr), 4) = brr
End Sub
Sub del()
Range("l5:o1000").ClearContents
End Sub


在这里显示(J列)的拆分的结果.rar

14.21 KB, 下载次数: 7

正则

点评

我不知道正则是什么意思,一直没去了解,学习了  发表于 2016-9-25 11:24
回复

使用道具 举报

 楼主| 发表于 2016-9-25 12:34 | 显示全部楼层
本帖最后由 792351999 于 2016-9-25 12:35 编辑
苏子龙 发表于 2016-9-25 08:31
Sub tt()
    Dim i%
    For i = 5 To [j65536].End(3).Row

老师!请再用函数编写一个吧!
回复

使用道具 举报

发表于 2016-9-25 13:08 | 显示全部楼层
792351999 发表于 2016-9-25 12:34
老师!请再用函数编写一个吧!

=TRIM(MID(SUBSTITUTE(SUBSTITUTE($J5,"-",","),",",REPT(" ",100)),COLUMN(A1)*200-99,20)),数组公式,ctrl+shift+enter结束

回复

使用道具 举报

发表于 2017-6-13 21:27 | 显示全部楼层
上面的代码添加中国后有问题
QQ截图20170613212600.png
回复

使用道具 举报

发表于 2017-6-13 21:29 | 显示全部楼层
Sub 分列()
Dim arr
Dim regex As New regexp
arr = Range("j5:j7")
ReDim brr(1 To UBound(arr), 1 To 10)
With regex
      .Global = True
      .Pattern = "-[^,]+"
      For i = 1 To UBound(arr)
          If .Test(arr(i, 1)) Then
             For Each m In .Execute(arr(i, 1))
                 n = n + 1
                 brr(i, n) = Replace(m, "-", "")
             Next m
          End If
          If n > x Then x = n
          n = 0
      Next i
End With
[l10].Resize(i - 1, x) = brr
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:02 , Processed in 1.167453 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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