excel用自定义函数提取单元格内字符串中的数字
发布时间:2022-06-10 08:39:39
如果Excel单元格中包含一个混合文本和数字的字符串,要提取其中的数字,通常可以用下面的公式,例如字符串“隆平高科000998”在A1单元格中,在B1中输入数组公式:
=MID(A1,MATCH(1,–ISNUMBER(–MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0),COUNT(–MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))
公式输入完毕按Ctrl+Shift+Enter结束,公式返回文本形式的数值“000998”。下面的公式也可以提取字符串中的数值,并返回数值形式:
=LOOKUP(9E+307,–MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),ROW(INDIRECT("1:"&LEN(A1)))))
公式返回“998”。
上述两个公式适合于字符串中包含连续数字的情况。但有时字符串中可能包含多个被文本分隔的数字,如“世纪家园31栋3单元901室”中就包含了3个数值,用上面的第二个公式只能返回第一个数值“31”,而第一个公式不能得到正确的结果。要分别提取字符串中的各个数值,可以用下面的自定义函数。
在Excel中按Alt+F11,打开VBA编辑器。单击菜单“插入→模块”,在代码窗口中输入下列代码:
Function GetNums(rCell As Range, num As Integer) As String
Dim Arr1() As String, Arr2() As String
Dim chr As String, Str As String
Dim i As Integer, j As Integer
On Error GoTo line1
Str = rCell.Text
For i = 1 To Len(Str)
chr = Mid(Str, i, 1)
If (Asc(chr) < 48 Or Asc(chr) > 57) Then
Str = Replace(Str, chr, " ")
End If
Next
Arr1 = Split(Trim(Str))
ReDim Arr2(UBound(Arr1))
For i = 0 To UBound(Arr1)
If Arr1(i) <> "" Then
Arr2(j) = Arr1(i)
j = j + 1
End If
Next
GetNums = IIf(num <= j, Arr2(num – 1), "")
line1:
End Function
该自定义函数定义了两个参数,第一个参数指定字符串所在的单元格,第二个参数指定提取字符串中的第几个数值。如果字符串中仅包含2个数值,而第二个参数大于2,则函数会返回空。
返回Excel工作表界面。假如上述字符串在A2单元格中,在B2中输入:
=Getnums(A2,1)
公式将以文本形式返回字符串中的第一个数值。要得到字符串中的第N个数值,将公式中的第二个参数“1”替换为N即可,如下图D2中的公式:
=Getnums(A2,3)
返回“901”。
说明:该自定义函数在处理小数形式的数值时,将小数点“.”也视为字符,因而对于小数可分别提取小数的整数部分和小数部分


猜你喜欢
- Win11系统怎么投屏呢?不少的朋友想要将Win11系统连接投屏到电视上面,但是不会操作,下面小编就为大家带来Win11投屏到电视的教程,来
- 添加了相应的声音后,可以设置声音的播放音量,其方法是:选中声音图标,切换至“播放”面板,在“音频选项”选项板中单击“音量”按钮,在弹出的列表
- 我们都知道用wps编辑文档很方便,如果我们想用wps画图该怎么做呢?可能有人会问wps不是主要用来编辑文字的吗?怎么画图?但是事实上用wps
- win11电脑快速启动怎么关闭?win11系统中有快速启动,想要关闭快速启动,该怎么设置呢?下面我们就来看看win11关闭快速启动的技巧wi
- ppt怎么制作圣诞树?马上就要到圣诞了,怎么才能制作一张很漂亮又有创意的圣诞贺卡呢?今天我们就用ppt来制作带圣诞树的圣诞贺卡,需要的朋友可
- Word回车符号变大了?最近有小伙伴们询问小编在使用Word的时候突然发现文件里的回车符号变大了?这是怎么一回事,要如何解决呢?还不清楚的小
- 欢迎观看illustrator教程,小编带大家学习 illustrator 的基本工具和使用技巧,了解如何在 illustrator 中使用
- 单元格是工作表中的基本元素,它可以保存数值、文本或公式。单元格由其地址来识别,地址由列字母和行数字组成。例如,单元格Dl2 就是位于第4 列
- 我们在使用Win10专业版系统的时候,如果在使用过程中经常使用微软拼音输入法,那么微软输入法将对我们常用的词组以及一些输入习惯进行记忆,方便
- 方法如下: 1、点击开始菜单,在“开始”——“所有程序”——“附件”中找到“命令提示符”右键点击以管理员身份打开;
- 很多用户们在使用这款Nike Run Club软件的时候,不是非常清楚这款软件中身高体重要怎么才能够填写,因为其中所用的单位,是国外的单位,
- WPS是一款很好的办公软件,利用该软件我们可以很好的排版文字和图片,也可以利用该软件对扫描的图片文字进行处理,处理成我们的WPS文字的文档,
- 最近,有小伙伴留言问:滚动式且能无限循环的照片展示在PPT中如何实现?那么,今天我们就一起来学习制作方法吧!首先,我们看一下效果:具体操作方
- 在PPT的实际制作中,你一定遇到过在文本框输入的文字越来越多,字号却为了适应文本框大小,而变得越来越小的情况吧?一旦PPT文字内容比较多的时
- 快速访问工具栏浮动在Word2007窗口的左上角,允许用户将最常使用的命令或按钮添加到此处,快速访问工具栏是Word2007窗口中唯一允许用
- 喜欢用Google浏览器的用户如果想要更改头像的话可以随时更改哦,但是有些用户还并不知道Google浏览器怎么更改头像,那么现在小编就来告诉
- 谷歌浏览器皮肤怎么换?谷歌浏览器的默认皮肤一般都是白色,标签、旁白、网址栏、状态栏等等一片白,这对于经常使用谷歌浏览器的用户来说会比较刺眼,
- 在线学习除了看课、讨论怎么能离得开在线测试呢?今天起,为大家介绍各类适合快速开展在线测试的工具。首先,我们来聊聊支持批量导入、自动批改选择题
- 众所周知,Linux系统网络性能可以用工具来测试,主要的测试工具有route、netstat、tcpdump。今天,我们就针对这三种工具来详
- 在默认的工作表中,所有工作表背景都是白色的。可以选择一种颜色填充工作表单元格,也可以选择一幅图像作为工作表的背景。选择一幅图像作为工作表背景