前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA自定义函数:从文本中提取数字

VBA自定义函数:从文本中提取数字

作者头像
fanjy
发布于 2024-03-29 06:08:16
发布于 2024-03-29 06:08:16
41700
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:VBA,自定义函数

下面是一个自定义函数,可以从文本中提取数字。这个函数来源于forum.ozgrid.com,辑录于此,供参考。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Function ExtractNumber(rCell As Range, _
 Optional Take_decimal As Boolean, _
 Optional Take_negative As Boolean) As Double
 
 Dim iCount As Integer
 Dim i As Integer
 Dim iLoop As Integer
 Dim sText As String
 Dim strNeg As String
 Dim strDec As String
 Dim lNum As String
 Dim vVal, vVal2
 Dim c As Range
 
 For Each c In rCell
   sText = c
   If Take_decimal = True And Take_negative = True Then
     strNeg = "-" '负号必须在第一个数字之前.
     strDec = "."
   ElseIf Take_decimal = True And Take_negative = False Then
     strNeg = vbNullString
     strDec = "."
   ElseIf Take_decimal = False And Take_negative = True Then
     strNeg = "-"
     strDec = vbNullString
   End If
 
   iLoop = Len(sText)
   For iCount = iLoop To 1 Step -1
     vVal = Mid(sText, iCount, 1)
     If IsNumeric(vVal) Or vVal = strNeg Or vVal = strDec Then
       i = i + 1
       lNum = Mid(sText, iCount, 1) & lNum
       If IsNumeric(lNum) Then
         If CDbl(lNum) < 0 Then Exit For
       Else
         lNum = Replace(lNum, Left(lNum, 1), "", , 1)
       End If
     End If
 
     If i = 1 And lNum <> vbNullString Then lNum = CDbl(Mid(lNum, 1, 1))
   Next iCount
 
   If Not IsNumeric(lNum) Then lNum = 0
 
   ExtractNumber = ExtractNumber + CDbl(lNum)
   lNum = ""
 Next
End Function

其中,参数rCell代表要包含数字内容的单元格;参数Take_decimal代表是否提取水小数值,布尔型,可选;参数Take_negative代码是否提取负值,布尔型,可选。

下图1为应用示例。

图1

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA自定义函数:将字符串拆分成二维数组
下面是在forum.ozgrid.com看到的一段VBA程序,值得参考,特辑录于此。
fanjy
2024/03/12
5200
VBA自定义函数:将字符串拆分成二维数组
在VBA中对数组排序的代码
这是一段非常好的代码,来自ozgrid.com,可以使用它来快速排序VBA中的数组。
fanjy
2023/09/21
1.6K0
在VBA中对数组排序的代码
一个VBA自定义函数,使用文本格式连接唯一值单元格
一个单元格区域内有一组数字,这些数字中存在多个相同的数字,想要将这些数字中的唯一值提取出来并组合成一串数字文本,如下图1所示。
fanjy
2022/03/04
1.9K0
一个VBA自定义函数,使用文本格式连接唯一值单元格
VBA代码:在工作表中自动添加矩形
这是在www.wimgielis.com中看到的一段代码,可以在工作表中自动添加一个矩形,用户可以指定矩形的大小和填充的颜色,以及指定相关联的宏。辑录于此,供参考。
fanjy
2024/04/26
7130
VBA代码:在工作表中自动添加矩形
VBA自定义函数:一次查找并获取指定表格中的多个值
这个自定义函数来自于forum.ozgrid.com,可以在指定表中查找多个值,并返回一组结果,而这些结果可以传递给另一个函数。
fanjy
2024/03/25
5990
VBA自定义函数:一次查找并获取指定表格中的多个值
使用VBA实现多个值组合查找
假设工作表中包含三列,即列A中是水果名,列B中是颜色,列C中是产地,现在查找同时包含“apple”、“red”和“Hungary”的行,可以使用下面的代码:
fanjy
2024/03/11
5390
使用VBA实现多个值组合查找
将所选区域中的所有数字四舍五入为固定位数的VBA代码
在分析测量数据时,通常以固定数量的数字显示结果,称为有效数字。数字的数量取决于测量本身的准确性。虽然Excel有几种方法可以对结果进行四舍五入,但没有一种方法可以将四舍五舍五入处理到指定的位数。
fanjy
2024/04/19
1790
将所选区域中的所有数字四舍五入为固定位数的VBA代码
VBA实用小程序79:统计不同值或唯一值的VBA自定义函数
我们说,这组数据有6个不同值:a,b,c,d,e,f;有3个唯一值:c,d,f,因为它们在列表中只出现了1次。
fanjy
2021/07/12
2K0
VBA实用小程序79:统计不同值或唯一值的VBA自定义函数
用VBA实现Excel函数03:SUMIF
SUMIF,条件求和函数,是一个常用的数据统计公式。SUMIF函数原理可以分步理解:
xyj
2020/07/28
6.5K0
用VBA实现Excel函数03:SUMIF
VBA程序:将数字转换成任意进制的数
在forum.ozgrid.com中看到的一段程序,可以将数字转换成任意进制的数。
fanjy
2023/12/11
2340
VBA程序:将数字转换成任意进制的数
VBA实战技巧09: 一个仅对满足条件的可见行求平均值的自定义函数
如果隐藏了某些行,AVERAGEIF函数仍会对所有行中满足条件的值求平均值,并不会受到隐藏行的影响,如下图2所示。
fanjy
2020/10/28
1.5K0
VBA实战技巧09: 一个仅对满足条件的可见行求平均值的自定义函数
删除包含多行文本的单元格中重复文本的VBA自定义函数
如下图1所示,在单元格A1中包含多行文本,现在要求删除这些文本中开头单词相同的行,仅保留第1行,结果如图1单元格B1中所示。
fanjy
2024/07/05
5530
删除包含多行文本的单元格中重复文本的VBA自定义函数
VBA代码库08:获取字符串中指定位置的子字符串
下面的自定义函数:ExtractString函数,来源于《VBA Developer’s Handbook》,对于分析字符串来说,是一个很有用的函数。
fanjy
2019/09/19
3.6K0
VBA代码库08:获取字符串中指定位置的子字符串
用VBA实现Excel函数02:SUM
说到Excel的SUM函数,我估计只要用过Excel的,应该没人不知道了,SUM函数多简单啊,点一下自动求和,自动就能定位好范围,回车就完成了。
xyj
2020/07/28
3K0
VBA自定义函数:文本转换为日期时获取正确的日期格式
在VBA中处理日期会有些麻烦,当试图将字符串转换为日期时,可能会遇到意想不到的结果,例如:
fanjy
2024/07/05
1.1K0
VBA自定义函数:文本转换为日期时获取正确的日期格式
VBA操作VBA——提取数字
会使用Excel的人都知道数字和文本是应该分开列来存储的,可是总是会碰上一些人仅仅是把Excel当作制作表格的一个简单工具,至于使用函数进行数据处理是根本不会的!
xyj
2020/07/28
4.5K0
VBA操作VBA——提取数字
使用VBA自定义函数创建数字序列
如果是手工操作,当数据间隔很大或者数据较多时很麻烦,也需要相当长的时间才能完成。然而,可以使用一个由VBA编写的自定义函数轻松实现。
fanjy
2022/11/16
1.2K0
使用VBA自定义函数创建数字序列
VBA实战技巧04: 一个用于两个列表区域比较的自定义函数
本文整理自https://fastexcel.wordpress.com/,有兴趣的朋友可以研究一下。
fanjy
2020/04/14
1.4K0
VBA自定义函数:在单元格区域中创建不重复的随机数
有时候,我们需要创建一组不重复的随机组,例如在指定单元格区域中创建一组不重复的随机数用于模拟数据分析。
fanjy
2024/03/11
5160
VBA自定义函数:在单元格区域中创建不重复的随机数
Excel VBA学习之身份证号校检自定义函数
【问题提出】上次学习了一个用Excel函数的方法来解决这个问题,但是函数太长了,有时会忘记:
哆哆Excel
2022/10/25
9180
Excel VBA学习之身份证号校检自定义函数
推荐阅读
相关推荐
VBA自定义函数:将字符串拆分成二维数组
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验