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”。


说明:该自定义函数在处理小数形式的数值时,将小数点“.”也视为字符,因而对于小数可分别提取小数的整数部分和小数部分

标签:公式,字符串,提取,数值,Excel函数
0
投稿

猜你喜欢

  • excel2003中工作薄、工作表和单元格的基本概况关系

    2023-02-07 22:50:41
  • macos monterey 都有哪些新功能

    2023-10-10 01:35:00
  • 在Word2007中如何使用或消除智能指针编程功能

    2022-04-17 02:43:38
  • Win10电脑的任务栏浅色模式无法勾选怎么办?

    2022-04-13 04:32:14
  • OBS Studio怎么录制视频?OBS Studio录制视频的操作步骤

    2023-12-05 02:35:56
  • 只需简单的几步设置让新建的WPS文字首行自动缩进

    2023-11-18 10:48:44
  • QQ输入法等级加速图标怎么点亮

    2023-03-23 16:44:58
  • Win8系统电脑无法连接WiFi无线网络的解决方法

    2022-08-08 22:41:23
  • Excel2013表格中如何打印固定的表头和表尾?

    2023-05-16 19:00:46
  • Win10电脑怎么修改有线网卡Mac地址?教你一招快速解决

    2023-11-24 23:32:57
  • win10卡顿严重完美解决图文教程

    2022-08-17 20:22:16
  • excel2003排序功能使用教程

    2022-11-30 06:43:34
  • 常用的PPT配色方案

    2024-01-03 10:45:39
  • mac策略类塔防游戏kingdom rush有哪些游戏特色?

    2023-12-10 12:48:00
  • 苹果 watchOS 7.6 开发者预览版 Beta4 发布

    2023-03-02 01:22:19
  • 开机数字小键盘默认开启怎么设置_win10注册表默认开启小键盘教程

    2023-02-19 09:51:13
  • Windows11怎么关锁屏?Win11如何关闭屏幕锁屏的教程

    2022-11-26 23:04:22
  • WPS Text 2013实现带分节符的复杂交错页面

    2022-11-30 23:17:12
  • 迅捷视频转换器怎么剪辑音频?迅捷视频转换器剪辑音频的方法

    2023-08-09 20:45:12
  • 如何去掉excel共享的方法

    2023-12-10 20:49:42
  • asp之家 电脑教程 m.aspxhome.com