Excel精英培训网

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

[已解决]如何提取区域中一个数字的次数。

[复制链接]
发表于 2016-7-4 11:31 | 显示全部楼层 |阅读模式
如何提取区域中一个数字的次数。
最佳答案
2016-7-4 14:50
本帖最后由 today0427 于 2016-7-4 14:52 编辑

两种方法自己选择,自定义函数方法在b2单元格输入公式 =cs($A$2,B3) 然后右拉就好了 QQ图片20160704142908.png
  1. Function cs(bz As String, sj As Range) '自定义函数方法
  2.      Dim reg, str$, mh
  3.         Set reg = CreateObject("vbscript.regexp")
  4.         str = "共(\d+)次.*?[:|,]" & bz
  5.         reg.Pattern = str
  6.         reg.MultiLine = True
  7.         Set mh = reg.Execute(sj)
  8.         cs = mh(0).submatches(0)
  9. End Function


  10. Sub zz()
  11. Dim reg, str$, mh, bz, ar, j%
  12.         Set reg = CreateObject("vbscript.regexp")
  13.         bz = Format([a2], "00")
  14.         str = "共(\d+)次.*?[:|,]" & bz
  15.         reg.Pattern = str
  16.         reg.MultiLine = True
  17.         ar = Range("b2:g3")
  18.         For j = 1 To UBound(ar, 2)
  19.             Set mh = reg.Execute(ar(2, j))
  20.             ar(1, j) = Format(mh(0).submatches(0), "'@")
  21.         Next
  22.         [b2].Resize(1, UBound(ar, 2)) = Application.Index(ar, 1)

  23. End Sub
复制代码

提取次数.rar

9.95 KB, 下载次数: 42

发表于 2016-7-4 13:56 | 显示全部楼层
本帖最后由 today0427 于 2016-7-4 13:58 编辑
  1. Sub zz()
  2. Dim reg, str, mh, bz, ar, j
  3.         Set reg = CreateObject("vbscript.regexp")
  4.         bz = Format([a2], "00")
  5.         str = "共(\d+)次.*?[:|,]" & bz
  6.         reg.Pattern = str
  7.         reg.MultiLine = True
  8.         ar = Range("b2:g3")
  9.         For j = 1 To UBound(ar, 2)
  10.             Set mh = reg.Execute(ar(2, j))
  11.             ar(1, j) = mh(0).submatches(0)
  12.         Next
  13.         [b2].Resize(1, UBound(ar, 2)) = Application.Index(ar, 1)

  14. End Sub
复制代码
先写个sub吧,一会儿整个自定义函数,这个题目自定义函数最灵活了 QQ图片20160704134959.png
回复

使用道具 举报

发表于 2016-7-4 13:57 | 显示全部楼层
一会儿自定义函数弄好了一块儿给你传附件
回复

使用道具 举报

发表于 2016-7-4 14:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 today0427 于 2016-7-4 14:52 编辑

两种方法自己选择,自定义函数方法在b2单元格输入公式 =cs($A$2,B3) 然后右拉就好了 QQ图片20160704142908.png
  1. Function cs(bz As String, sj As Range) '自定义函数方法
  2.      Dim reg, str$, mh
  3.         Set reg = CreateObject("vbscript.regexp")
  4.         str = "共(\d+)次.*?[:|,]" & bz
  5.         reg.Pattern = str
  6.         reg.MultiLine = True
  7.         Set mh = reg.Execute(sj)
  8.         cs = mh(0).submatches(0)
  9. End Function


  10. Sub zz()
  11. Dim reg, str$, mh, bz, ar, j%
  12.         Set reg = CreateObject("vbscript.regexp")
  13.         bz = Format([a2], "00")
  14.         str = "共(\d+)次.*?[:|,]" & bz
  15.         reg.Pattern = str
  16.         reg.MultiLine = True
  17.         ar = Range("b2:g3")
  18.         For j = 1 To UBound(ar, 2)
  19.             Set mh = reg.Execute(ar(2, j))
  20.             ar(1, j) = Format(mh(0).submatches(0), "'@")
  21.         Next
  22.         [b2].Resize(1, UBound(ar, 2)) = Application.Index(ar, 1)

  23. End Sub
复制代码

today0427.rar

17.4 KB, 下载次数: 6

评分

参与人数 2 +10 收起 理由
grf1973 + 9 赞一个,正则果然强大
tfzyes + 1 赞一个

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-7-4 17:38 | 显示全部楼层
非常感谢你的帮助,帮我省了不少时间。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 23:36 , Processed in 0.364246 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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