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从文本中提取数字

vba怎么提取字符串中的数字(VBA从文本中提取数字)(1)

第七章 代码的简单过程

Simple procedure of code

8 使用VBA从文本中提取数字Extract Numbers from Text using Excel VBA

Public 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

vba怎么提取字符串中的数字(VBA从文本中提取数字)(2)

在提取过程中处理小数点和千位分隔符时,当涉及到小数点和千位分隔符时,有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

vba怎么提取字符串中的数字(VBA从文本中提取数字)(3)

【分享成果,随喜正能量】我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

vba怎么提取字符串中的数字(VBA从文本中提取数字)(4)

分享成果,随喜正能量】如今,“吃亏是福”常常被人们提起,这句话逐渐成为人们面对种种不公时的一种宽慰。但实际上,仅仅将这句话当成“吃亏”后的慰藉,又或者为了获得“福报”主动吃亏,是一种十分片面的理解。。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页