您的位置: 首页 > EXCEL技巧 > Excel函数 >

用自定义函数提取单元格内字符串中的数字

时间:2013-12-13 整理:docExcel.net

如果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单元格中包含一个混合文本和数字的符串,要提取其中的数字,通常可以用下面的公式,例如符串“隆平高科000998”在A1单元格中,在B1中输入数组公式: =MID(A1,MATCH(1,--ISNUMBER(--MID(A1,ROW(INDIRECT( 1: &LEN(A1))),1)),0),COUN...
Excel表格中怎样提取字符串中的特定字符 问题:Excel表格中怎样提取字符串中的特定字符
回答: Excel表格中怎样提取符串中的特定字符。除了直接输入外,从已存在的单元格内容中提取特定字符输入,绝对是一种省时又省事的方法,特别是对一些样式雷同的信息更是如此,比如员工名单、籍贯等信息。 如果我们想快速...
用自定义函数提取字符串中的重复字符 问题:用自定义函数提取字符串中的重复字符
回答:有时需要将Excel单元格内符串中的重复字符提取出来,例如提取符串“abcdeAbcDe”中重复的几个字符“bce”,如图所示,可以用自定义函数实现。 1.按Alt+F11,打开VBA编辑器。 2.单击菜单“插入→模块”,在代码窗口中粘贴...
快速提取出Excel2010单元格括号内的文字信息 问题:快速提取出Excel2010单元格括号内的文字信息
回答:...明 mid(在哪取,从第几个开始取,取几个):从指定的符串(文本)中取指定的字符(文本)。 find(找什么,在哪里找):返回查找内容在文本中的位置。 len(单元格引用):统计单元格内有多少个字。 首先,用find函...
在Excel2013换行单元格中提取出第二行的数据 问题:在Excel2013换行单元格中提取出第二行的数据
回答:...替换,一共要替换多少个,替换为什么):使用其他文本符串并根据所指定的字符数替换某文本符串中的部分文本。 find(查找什么,在哪里找):返回查找内容在文本中的位置。 char(10):换行符。 首先,用find函数在D...
提取字符串中两相邻分隔符之间文本的公式 问题:提取字符串中两相邻分隔符之间文本的公式
回答:有时需要从包含分隔符号的符串提取符串,例如Excel工作表的某列中包含类似“200-GH11301-11TB5”的文本符串,该符串被两个相同的分隔符号“-”分成三部分,且每部分的字符数不固定,现在需要提取其中的第2部分内...
相关知识:

下面内容对您也许有用

      话题:用VBA怎么样实现用自定义函数实现,将数字转换为对应的字符串,
      问:郁闷,没有财富可奖励了.希望那个大大能帮一把.感激不尽
      答:chr或是fomat函数 请问 VBA 从字符串中提取数字的 在VBA中要将数值表达式的值转换
      话题:如何用Excel函数提取单元格中指定的字符串
      问:A B 1 OS WS3 FD WS3 2 K QA56 OLSA QA56 3 MZK WA657 LM WA657 我要的字符串在A
      答:TRIM(MID(SUBSTITUTE(A15,"",REPT("",99)),99,99))不能有像第3行那样两个字符串中间有两个空格的哦。 用EXCEL函数提取单元格中的字符 在EXCEL中,可以使用什么函数
      话题:excel单元格格式的数字中自定义
      问:如在excel单元格格式的数字中自定义类型设K0+000"~"K0+000,在输入12345678就能
      答:一个单元格中只能输入一个数字,如果没有小数点,输入12345678,这是一个数字,通过自定义单元格格式是可以实现的,但如果要有两个小数点,那只能是两个数字了, EXCEL单元格格式数字自定义! excel表单元格格式数字自定义
      话题:建立一个Excel自定义函数,要求取某个单元格字符串中从右向左
      问:如题 例:A1:A4分别为:abcd-1234 aabb-ccdd-23456 jiej-ifjkd-456-7890 2342-
      答:代码如下:Function Cright(Byref Rng as Range,ByVal s as String)Dim arr arr=Split(Rng,s)Cright=arr(Ubound(arr))End Function 提问者评价 非常不错,谢谢 如何用Excel函数提取单元格中 EXCEL函数:如何把单元格中字符串
      话题:如何在excel中将一个单元格中的字符串使用函数将特定字符串中
      问:如何在excel中将一个单元格中的字符串如A1储存格:X-150300Y-78000,分别用函数
      答:方法一:连续进行两次数据分列—分别使用分隔符XY,即可 方法二:在B1输入=mid(A1,2,find("Y",A1)-2)在C1输入=right(A1,len(A1)-find("Y",A1)) 如何用Excel函数提取单元格中 用EXCEL函数提取单元格中的字符
      话题:求高手写 EXCEL中的不规则字符串中提取前三个数字的自定义函数
      问:求高手写 不规则字符串中提取前三个数字自定义函数提取第一个的函数就命名为
      答:在Visual Basic Application中编辑器中写:function TQSZ1(str)on error goto errTQSZ dim m as integer str=str&""m=0 for i=1 to len(str)if asc(mid(str,i)) excel里想把字符串转换成数字, EXCEL函数提取字符串中的数字
      话题:在excel的单元格中提取字母的函数是什么。知道
      答:1、LEFT函数用于提取指定单元格内(文本字符串)左侧指定个数的字符(一个汉字或数字或字母均为一个字符);用法为:LEFT(text,[num_chars))其中text为包含要 excel用函数提取单元格中的字母 EXCEL表格里提取单元格的数字
      话题:在EXCEL中,可以使用什么函数提取某一单元格中的某一串字符_
      问:比如,在单元格A1中,有时可以输入WOAINI,或WOHENGNI,或WOXIANGNI,等,只要
      答:楼上网友的公式中有一点不符合提问者要求,修改一下:=IF(COUNT(SEARCH("NG",A1)),"NG","") 用EXCEL函数提取单元格中的字符 如何用Excel函数提取单元格中
      话题:如何用Excel函数提取单元格中指定的字符串 A B 1 OS WS3 FD WS
      问:我要的字符串单元格内容里面,位置和字符串长度不确定,比如说WS开始的抽取3位
      答:比如A1 ws1234 B1 输入=IF(FIND("ws",A1),RIGHT(A1,3),"")Q开始的抽取2位=IF(FIND("Q",A1),RIGHT(A1,2),"") EXCEL中的字符串截取函数 多个 EXCEL 函数字符串
      话题:急急急~同一个单元格内提取不固定位置的数值并且相加,高手
      问:打个比方A1单元格内有:上网看电影10分钟;看书60分钟;在公司上班时间是480分钟
      答:楼上的数组公式只能提取字符串中数字,并不能进行合计。要想将提取的数字分别累计,用下面的自定义函数。假如字符串数据在A列。方法:按ALT+F11进入VBE编辑窗口 excel 如何获取当前单元格的前 如何将EXCEL多个工作表的同一
最新评论