美文网首页
EXcel提取[ab{*}ab]型字符串中数字的方法

EXcel提取[ab{*}ab]型字符串中数字的方法

作者: Eline_569f | 来源:发表于2019-05-27 15:00 被阅读0次

经常看到小伙伴,在群里问,提取手机号码,提取薪资信息中的数字,之前并没有刻意去研究Excel的方法,有些看起来很简单的操作,也是要搜索几篇博文后,才找到合适方法,还是需要做个记录总结。以提取薪资信息中的上限和下限数字字符为例,总结几个小方法。

1.分列实现

选中需要提取数字的单元格,点击数据--分列,字符宽度不确定,一般是按默认选择‘分隔符号’,点击下一步,分隔符号根据需求来设置,比如这里加上‘其他’设置,设为‘k’,点击下一步,‘目标区域’默认显示的是上一步选中的需要提取数字的单元格,这里建议手动选择区域,不去覆盖原始数据,再点击‘完成’,提取出上下限数字字符,但是下限那里有个‘-’,可以用很多种方法去掉,比如这里在D2单元格输入:=RIGHT(C2,LEN(C2)-1),回车后,去掉负号,再下拉拖动,填充格式,其他行对应的D列单元格也自动提取出薪资上限值。操作截图如下,

2.函数实现

组合使用mid,left,len函数,提取薪资上下限数字字符。先在B2中输入:=LEFT(A2,FIND("k",A2)-1),回车后,提取出第一个'k'前面的下限数值;再在C2中输入:=MID(A2,FIND("-",A2)+1,LEN(A2)-(LEN(B2)+2)-1),回车后,提取出第二个'k'后面的上限数值,选中B2和C2,下拉拖动,填充格式,其他行对应的D列单元格也自动提取出薪资下限和上限数值。操作截图如下,

3.快速填充实现

先在B2和C2单元格输入‘9’和‘15’,从B2开始,下拉拖动到A列最末单元格对应的行所在位置,点击数据--快速填充,自动填充完成,提取出下限数值。同理,C列单元格也是相同操作完成,提取上限数值。操作截图如下,

4.VBA实现

这个需要office启用宏功能,文件--选项--信任中心--信任中心设置,点击‘宏设置’,修改选项如下操作,具体可参考office官方说明。

打开VBA界面方法:

(1)按‘Alt+F11’,有的笔记本快捷键默认是‘Alt+Fn+F11’

(2)菜单栏--开发工具,点击‘Visual Basic’,

(3)工作表名称右键单击,选择‘查看代码’;

然后,在对应工作表下,右键单击,选择‘插入’--‘模块’,模块窗口工作区域,复制下面代码,

Sub 提取薪资数字()

    arr = Range("a2:a20" & Range("a65536").End(3).Row)

    Set reg = CreateObject("vbscript.regexp")

    reg.Pattern = "\d*"

    reg.Global = True

    For i = 1 To UBound(arr, 1)

        s = arr(i, 1)

        If reg.Test(s) Then

            Set mymatch = reg.Execute(s)

            m = 2

            For Each mat In mymatch

                Cells(i + 1, m) = mat

                m = m + 1

            Next

        End If

    Next i

End Sub

返回到Excel对应工作表中,提取出薪资上下限数值,操作截图如下,再统一调整格式即可。

小结:

文中的例子,提取比较简单有规律,快速实现方法,可以用快速填充和分列,是很方便的。时间充裕的情况下,也可以用组合函数或VBA实现。

相关文章

网友评论

      本文标题:EXcel提取[ab{*}ab]型字符串中数字的方法

      本文链接:https://www.haomeiwen.com/subject/xaxhtctx.html