如果文字和数字是混合着的,且数字位数不统一,那么使用LEFT、RIGHT、MID函数的适用性将大大降低。
B2单元格输入以下公式,然后向下填充公式
=-LOOKUP(,-MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))
公式表示:从A2单元格中,查找半个字节所在的位置,作为MIDB的截取起始位置,截出一组字符串;因前面加上了负号,LOOKUP从所有负数中找到最小的负数,并通过LOOKUP前的负号转换为正值,即为从单元格中分离出的数字。
详见附图及公式求值过程
给你一个VBA的自定义函数,函数名称是:myFind( 单元格)
Function myFind(rg As Range)
Dim reg, y%, n, mac, ar()
Set reg = CreateObject("VBScript.regexp")
With reg
.Global = True
.Pattern = "\d+"
Set mac = .Execute(rg)
For Each n In mac
y = y + 1
ReDim Preserve ar(1 To y)
ar(y) = n
Next
End With
myFind = Join(ar, ",")
End Function
操作方法(2010以上版本为例)如下:
1、将你的工作薄另存为启用宏的工作薄 ,并打开
2、按ALT+F11键,打开Excel的VBE编辑器
3、点选主菜单上的“插入”,在弹出的菜单中点选“模块”
4、这时会新建一个空白的代码编辑窗口
5、将上面代码全部复制到此窗口的空白编辑区域内
6、保存并返回工作表界面,记住自定义函数的名称(就是第一句代码function后面的那个)
7、在目标单元格内输入函数即可(此步与调用其它函数方法一样)