经常看到小伙伴,在群里问,提取手机号码,提取薪资信息中的数字,之前并没有刻意去研究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实现。