作者:绿色风
分类:
时间:2022-08-17
浏览:119
楼主 kevinchengcw |
Q: 如何利用vba代码自定义提取~连接的数字并计算其平均值的函数? A: 代码如下:
- Function X(ByVal Rng As Range) '函数 X(参数为单元格引用)
- Dim Str$, mMatch
- Application.Volatile '定义为易失性函数
- On Error GoTo Skip ’设定出错跳转
- With CreateObject("vbscript.regexp") '创建正则项目,用于提取指定格式字符串
- .Global = True '全局有效
- .Pattern = "(\d+)~(\d+)" '正则匹配内容为:以~号相连的两个数字
- Str = Trim(Rng.Value) '去掉单元格内容中可能存在的多余的空格
- If .test(Str) Then '如果当前内容有匹配的内容则
- For Each mMatch In .Execute(Str) '循环每个匹配项
- Str = Replace(Str, mMatch.Value, (Val(mMatch.submatches(0)) + Val(mMatch.submatches(1))) / 2) '将找到的匹配项文本替换为两端数的平均值
- Next mMatch
- End If
- Str = Replace(Str, "x", "*") & "*7850/1000000000" '完成算式处理,并将其中的x字符换成*乘号字符
- X = Evaluate(Str) '返回得到的算式的值
- End With
- Exit Function '正常运行完成后在此退出
- Skip: '出错时跳转至此
- X = "Error" '返回错误
- End Function
详见本例素材原帖:http://www.exceltip.net/thread-18629-1-1.html |
2楼 whong003 |
非常感谢了。 提高了我不少的工作效率 |
3楼 亡者天下 |
过来学习一下! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一