前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA专题:Val函数

VBA专题:Val函数

作者头像
fanjy
发布2022-11-16 14:06:32
1.3K0
发布2022-11-16 14:06:32
举报
文章被收录于专栏:完美Excel

Val函数返回作为参数传递的字符串中的前导数字,它在无法识别为数字部分的第一个字符处停止读取字符串,但它不会在空格处停止。

Val函数的语法为:

Val(String)

示例

代码:

Val("1234Excel")

返回:1234

代码:

Val("1234.5Excel")

返回:1234.5

代码:

Val("1234.56Excel")

返回:1234.56

代码:

Val("1234 23 34")

返回:12342334

代码:

Val("12323 .5 6")

返回:12323.56

Val函数经常被用于提取文本字符串开头的数字,但要注意下面几点:

1.Val函数不会将逗号识别为分隔符,例如下面的语句:

Val("1,234.56")

返回1,而不是1234.56。

当然,如果你认为文本字符串中可能有逗号,只需在应用Val函数之前使用Replace函数移除它们:

Val(Replace("1,234.56", ",",""))

2.Val函数将点识别为小数点,因此如果语言环境使用逗号作为小数点,则在应用Val函数之前,必须用点替换逗号。

3.Val函数将E、e、D和d识别为“10的幂”分隔符,这意味着,如果文本字符串以一个数字和其中一个字母开头,然后是更多的数字,则这些“更多的数字”将被假定为10的幂。以下所有语句将返回12000,而不是12。

Val("12E3abc")

Val("12e3abc")

Val("12D3abc")

Val("12d3abc")

4.如果前导字符本身是一个符号&,或者是符号&后跟o、O、h或H,那么Val函数可能不会返回0,而是具体取决于后面的内容。一个符号&本身,&o或&O,VBA查看后面的数字是否小于8。在0到7之间的一系列数字之前的每一个数字告诉VBA将组合视为八进制数。因此,下面的每一个都返回83,因为这是与“八进制123”等值的十进制数。

Val("&123")

Val("&o123")

Val("&O123")

同样,在数字0到9之前的&h或&h,字母a到f或字母A到F将被解释为十六进制数,Val将为它们生成等价的十进制数。例如,下面的代码返回291,因为它是“十六进制 123”等值的十进制数。

Val("&H123")

下面的代码:

Val("&Head")

返回:3757

与普通数字和非数字一样,Val函数将读取八进制和十六进制数字(这取决于符号和前缀),直到到达第一个非八进制和非十六进制数字(同样,取决于符号和前缀)。因此,以下代码返回的可能不是预期的结果。

Val("&123823432543534434534")

Val("&o123823432543534434534")

Val("&O123823432543534434534")

返回:83

Val("&HeadMan")

Val("&headman")

返回:3757

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档