在VBA自动化办公中不管是提取表格里的数字、清洗不规则数据还是批量处理文件名中的数值Val 函数都能一招搞定但如果单独使用Val则只能受限于Val函数的机械规则自左向右提取数字遇非数字即止比如基础用法示例1 数字开头文本数字数字在前则会提取到数字并且遇到非数字就停止Debug.Print Val(123abc456)Debug.Print Val(789.5元)Debug.Print Val(100-200)结果显示示例2 文本开头文本数字数字在后则提取不到数字返回0Debug.Print Val(金额789)Debug.Print Val(abc123)结果显示示例3 识别正负号带/-符号的数字,能正常识别正负号Debug.Print Val(-88.9)Debug.Print Val(567)结果显示示例4科学计数法 正常转换Debug.Print Val(1.23e4)结果显示若想要突破 Val 函数只能提取字符串开头数字的限制可以与 Left、Mid、InStr 等字符串处理函数打一套“组合拳”例如场景一提取字符串中间的数字Dim str As Stringstr 合同编号20260314合同名称Debug.Print Val(Mid(str, InStr(str, 2), 8))执行后结果场景二处理中文小数点str 88。9元Debug.Print Val(Replace(str, 。, .))执行后结果场景三从带千分位分隔符的金额中提纯数据str 1,234,456.78 元Debug.Print Val(Replace(str, ,, ))执行后结果以上分享的几个场景仅仅是抛砖引玉希望能为大家提供一些思路上的启发在实际工作中大家遇到的数据格式多种多样。这时可以尝试像搭积木一样灵活组合Val、Mid、Replace等基础函数来应对不同的提取需求这种组合方法最大的优点在于它主要依赖对字符串逻辑的理解而非高深的编程技巧非常适合刚开始接触VBA或数据处理的朋友们上手实践我的公众号“努力鸭是黑色的”一直在不间断地分享免费的编程案例和实用技巧如果您想提升自动化办公效率或提升自我请关注公众号解锁更多的编程知识