vba怎么提取字符串中的数字(VBA从文本中提取数字)
【分享成果,随喜正能量】弘一法师曾总结十大改过迁善之法,其中一项便是:吃亏。古人云:“我不识何等为君子,但看每事肯吃亏的便是。我不识何等为小人,但看每事好便宜的便是。”。
我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。
这九套教程从VBA零基础入门开始,到中级的字典、数据库,高级的类及程序分发,是对VBA理论的系统讲解。一般情况下您可以选择7.1.3.9教程进行学习,第7套是入门,第1套是入门后提高,第3套字典是VBA精华,第9套是实用的典型案例讲解。您也可以根据自己的需要选择中级第2套数据库及第8套Word VBA;高级第5套VBA类,第6套网抓及第10套程序分发(加载项)。
作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建及拥有积木。在九套教程中我给出了大量的积木,同时讲解了如何搭建。为了让学员拥有更多的积木,我开始着手这部《VBA即用型代码手册(汉英)》的创作,这部手册目前正在创作中,约600页,集合约500多个的案例,案例我用汉语和英语同时发布,一方面学员从中可以更好的领会和掌握VBA中用到的一些英语知识,另一方面,大家可以看到各种各样的积木。这部手册是大家学习和工作中的不可多得的实用资料。今日的内容是:VBA从文本中提取数字
第七章 代码的简单过程
Simple procedure of code
8 使用VBA从文本中提取数字Extract Numbers from Text using Excel VBAPublic Function getNumber(fromThis As Range) As Double
'从单元格中提取数字并返回。
Dim retVal As String
Dim ltr As String, i As Integer, european As Boolean
retVal = ""
getNumber = 0
european = False
On Error GoTo last
'检查范围是否包含欧洲格式编号,即小数点
If fromThis.Value Like "*.*,*" Then
european = True
End If
For i = 1 To Len(fromThis)
ltr = Mid(fromThis, i, 1)
If IsNumeric(ltr) Then
retVal = retVal & ltr
ElseIf ltr = "." And (Not european) And Len(retVal) > 0 Then
retVal = retVal & ltr
ElseIf ltr = "," And european And Len(retVal) > 0 Then
retVal = retVal & "."
End If
Next i
getNumber = CDbl(retVal)
last:
End Function
在提取过程中处理小数点和千位分隔符时,当涉及到小数点和千位分隔符时,有2种约定:
1 61,000.30 (常规)
2 61.000,30 (欧洲)
我们不需要对常规格式(61,000.30)进行特殊处理,因为默认情况下Excel和VBA能够处理这些数字。我们需要检查文本是否具有欧洲格式编号,我们必须查看是否.发生在,之前,(注意:此方法并非万无一失,但在大多数情况下应该可以很好地工作)。这可以通过使用 LIKE 语句来完成:
When it comes to decimal points & thousand separators there are 2 conventions:
1 61,000.30 (Regular)
2 61.000,30 (European)
We do not need special treatment for regular format (61,000.30) as Excel & VBA are capable of dealing with these numbers by default.To check if a text has European format number, we have to see if . occurs before ,(Note: this method is not fool-proof, but should work well for most situations)
This can be done by using LIKE statement,
if text like "*.*,*" then
european = true
else
european = false
end if
本节内容参考程序文件:Chapter07-1.xlsm
【分享成果,随喜正能量】我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】如今,“吃亏是福”常常被人们提起,这句话逐渐成为人们面对种种不公时的一种宽慰。但实际上,仅仅将这句话当成“吃亏”后的慰藉,又或者为了获得“福报”主动吃亏,是一种十分片面的理解。。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com