美文网首页
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