与 30万 读者一起学Excel
面试的时候规定用什么方法这个没法改变,但是学习的话可以多学几种,有备无患。
将字符串中的数字、汉字、字母分离在3个单元格。
1.快速填充
正常的快速填充,都是输入第一行内容,然后按Ctrl+E,但是这个方法不能保证100%正确。比如,字母在填充的时候出现异常。
其实还有特殊情况的快速填充,就是输入前2-3行的内容,这样可以更好的识别规律。这个小细节是以前无意间发现的。
2.Word的通配符替换
这个要借助Word,将内容复制到Word。
按Ctrl+H,查找内容[!0-9],勾选使用通配符,点全部替换。
这样就只剩下数字,再复制回Excel。
汉字的话,就用[!一-龟]。
字母的话,就用[!A-Za-z]。
Word的这种用法Excel查找和替换没法直接用,但却可以用在PQ或者VBA中。
3.PQ的Text.Select或Text.Remove()
里面的标点符号都是英文状态下输入,注意大小写必须一致。以提取汉字为例,用法跟Word中一样。
详见文章,就不再说明。
高级替换真好用,一次替换多个不同内容无烦恼,让替换变得随心所欲
4.VBA的自定义函数
插入模块,在里面输入代码。
Function RegExpTest(patrn, strng, Optional ByVal fgf As String = " ")
Dim regEx, Match, Matches ' 建立变量。
Set regEx = CreateObject("vbScript.regexp") 'New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全局替换。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match In Matches ' 遍历 Matches 集合。
RetStr = RetStr & fgf & Match
Next
RegExpTest = Mid(RetStr, Len(fgf) + 1)
End Function
这样就可以调用自定义函数。
数字:
=RegExpTest("[0-9]",$A2,"")
汉字:
=RegExpTest("[一-龟]",$A2,"")
字母:
=RegExpTest("[a-zA-Z]",$A2,"")
最后,你会发现,其实后面的方法原理都一样,都是利用正则表达式。
推荐:不服来试!被吹上天的Ctrl+E?究竟有多厉害!| 新技巧
上篇:某公司面试财务的Excel题目,真难,没两把刷子真搞不定
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)
联系客服