Excel精英培训网

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

[已解决]急求《vba视频80集》没有解决方法的代码,split难解。将多个单元格字符提取并计个数

[复制链接]
发表于 2015-2-27 11:21 | 显示全部楼层 |阅读模式
如附件和图片所示,取出以"\"分隔的 B2和B6单元格的字符  ,并统计出该被取出字符在A9:A23出现的次数。
Set qy = Union(Range("B2") & "+" & Range("E2"))
arr = Split(qy, "+")
这样好像行不通啊,,求大师帮帮忙。。谢谢了
最佳答案
2015-2-27 13:00
  1. Sub Macro1()
  2. Dim arr, d, i&, j%, s&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = [a9:a23]
  5. For i = 1 To UBound(arr)
  6.     d(arr(i, 1)) = d(arr(i, 1)) + 1
  7. Next
  8. For Each m In Union([b2], [e2])
  9.    x = Split(m, "")
  10.    For j = 0 To UBound(x)
  11.         s = s + 1
  12.         Cells(s + 8, 5) = x(j)
  13.         Cells(s + 8, 6) = d(x(j))
  14.    Next
  15. Next
  16. End Sub
复制代码
QQ截图20150227110611.png

求split求数量.rar

3.44 KB, 下载次数: 14

发表于 2015-2-27 11:42 | 显示全部楼层
Dim d As Object
Sub test1()
    Dim A, i
    A = Range("A1").CurrentRegion
    Set d = CreateObject("scripting.dictionary")
    For i = 2 To UBound(A)
        Call test2(A(i, 2))
        Call test2(A(i, 5))
    Next i
    [c9:d65536] = ""
    [c9].Resize(d.Count) = Application.Transpose(d.keys)
    [d9].Resize(d.Count) = Application.Transpose(d.items)
End Sub


Sub test2(x)
    Dim B, i
    B = VBA.Split(x, "\")
    For i = 0 To UBound(B)
        d(B(i)) = d(B(i)) + 1
    Next i
End Sub

求split求数量2.rar (7.8 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2015-2-27 11:56 | 显示全部楼层
爱疯 发表于 2015-2-27 11:42
Dim d As Object
Sub test1()
    Dim A, i

谢谢老师,都怪我表达能力太差了,,,是这样的
我要把B2单元格和E2单元格的内容取出来,并一一计算出他们在A9:A23各出现了多少次,并把结果写入到C9:C13对于的单元格中去。。。比如B2内容是A1\H5,那么就在A9:A23找出A1和H5各出现了多少次,比如A1在A9:A23共出现了3次,那么就在C9:D13写入结果。。。谢谢老师了
回复

使用道具 举报

发表于 2015-2-27 13:00 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, d, i&, j%, s&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = [a9:a23]
  5. For i = 1 To UBound(arr)
  6.     d(arr(i, 1)) = d(arr(i, 1)) + 1
  7. Next
  8. For Each m In Union([b2], [e2])
  9.    x = Split(m, "")
  10.    For j = 0 To UBound(x)
  11.         s = s + 1
  12.         Cells(s + 8, 5) = x(j)
  13.         Cells(s + 8, 6) = d(x(j))
  14.    Next
  15. Next
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-2-27 14:10 | 显示全部楼层
dsmch 发表于 2015-2-27 13:00

谢谢老师,感激不尽啊
又长见识了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 17:06 , Processed in 0.541994 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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