Excel用了很多年,很多人会忽略掉通配符的使用,在Excel中的替换界面中,没有类似Word中可以勾选“使用通配符”的选项,在Excel中如果要用通配符提取替换一些信息,就会给很多小伙伴造成了困扰。今天和大家分享一下如何在Excel中利用通配符达到想要的效果。
这几天看群里小伙伴经常有这样的问题,如何在Excel中提取一个字符串中符合特定条件的内容,如下图:
或者如下图:
上边第一个问题是要从字符串中提取第一个数字和最后一个数字之间的字符,上边第二个问题是要从字符串中提取含有大小写字母的字符。如果在不用VBA正则表达式的情况下,可以利用Excel联合Word,加上Word中通配符的辅助,提取所需的信息。
一、提取汉字、数字和英文字母
比如,我们有如下一组数据,要提取相应的姓名、城市和电话。
1.提取中文信息(本例为提取姓名)
首先可以将Excel中A列信息直接复制粘贴到一个Word的空白文档中。在Word中点击“替换”,在弹出窗口的查找内容处输入“[!一-龥]”,“替换为”处什么也不输入,在Word展开的面板中勾选“使用通配符”,点击全部替换,这样就将数据列中的非中文字符全部删除掉,然后把替换后的数据粘贴到Excel中即可,如下图:
上边查找内容处中的“[!一-龥]”为汉字通配符,其中“[一-龥]”表示GBK编码表中从“一”到“龥”的所有汉字(龥,拼音:yù)。而“[!一-龥]”中的“!”是否定的意思,表示除了汉字,其他全部替换成空。
2.提取数字或者提取英文字母
提取数字或英文字母的思路和上边提取汉字的一样,先将一列复制到Word中,在Word中点击“替换”,在弹出窗口的查找内容处输入“[!0-9]”就是查找非数字,输入[!a-zA-Z]就为非英文字母,“替换为”处什么也不输入,在Word展开的面板中勾选“使用通配符”,点击全部替换,这样就将数据列中的非数字或者非英文字母全部删除掉。最后再将替换后的数据粘贴回原Excel即可。
同样,[0-9]代表一个从0到9之间的一个字符,[a-zA-Z]表示一个从a到Z之间的一个字符,“!”则表示否定,[!0-9]则表示选择除了从0到9之间的其他字符,即为非数字。上边这两个知识点掌握后,就可以解决本文开始时的那两个小伙伴的问题了。
二、调整格式、变换顺序的情况
借助Word的通配符,我们也可以调整Excel中的文本顺序,比如说前两天在群里有个小伙伴提出如下这样的问题:
因为从截图不能拿到小伙伴的数据,为了演示方便,中药党自建一组数据演示,如下图:
(原始表格数据)
(转换后的表格数据)
我们同样可以将Excel表格中的内容复制到Word中,利用Word的通配符替换即可解决以上的类似问题,这里需要再补充和此题目相关的几个通配符的知识点:
a.在查找栏可以用小括号()括起一组通配符标识,在替换栏中用“\1”,“\2”等分别表示在查找栏第一个小括号、第二个小括号等之间的内容。
b.数量表达:
{n}:表示一个通配符标识正好出现了n次。例如:[0-9]{3}就只匹配3个连起来的数字,比如123,769。
{n,}:表示一个通配符标识出现了n次以上,包含n次。例如[0-9]{3,}不仅可以匹配123,768,也可以匹配到2345,76453。
{n,m}:表示此通配符出现n~m次。
@:表示一个通配符标识出现了1次以上。
做好相关知识点介绍后,我们分析一下这个题目,这个题目相对于本文开始题目的复杂点在于存在制表符,我们要将制表符替换为Excel中的Ctrl Enter(因为Excel中的换行为Ctrl Enter),但是Word中又没有Ctrl Enter这种标记,而如果将Word中的换行(^p或者^13)粘贴到Excel中后是不会在一个单元格中换行,而是直接将Word中换行符分隔的文本粘贴在了Excel的多行中。所以类似的题目我们要曲线救国:
第一步:先将Excel中的数据粘贴到Word中
第二步:找出能通配题目或选项的表达式。
分析一下题目和选项的文本,①题目和选项中有可能包含的是数字、字母、汉字以及常用的标点符号;②每个题目和选项包含的这些数字、字母、汉字以及标点符号的个数是大于等于1的。
所以数字字母和汉字可以用通配符“[a-zA-Z_0-9_一-龥]”表示,再加上能想到的一些常用中文标点符号,[a-zA-Z_0-9_一-龥?。,;“”、:]这样就基本涵盖了题目和选项里的所有字符。可以边写通配符边验证,验证时也可以在通配符中加“!”反向验证,如下图:
简单验证后,在通配符表达式后加@或者{1,}表示一个及一个以上的前一字符表达式,即为“[a-zA-Z_0-9_一-龥]{1,}”,再在后边加上制表符^t(制表符就是从Excel复制到Word中,横向表格之间的小箭头),我们再看一下匹配的效果:
第三步:用小括号分别将题目和各个选项括起来,为后边在替换处使用做准备。
即上边的通配符表达式复制5次,分别代表1个题目和4个选项,第6次的答案也和上边通配符一致,只不过没有最后的制表符,如果把([a-zA-Z_0-9_一-龥?。,;“”、:]{1,})用PP代替,那么在“查找处”完整的通配符就应该是PP^tPP^tPP^tPP^tPP^tPP,这个通配符就匹配到一个完整的题目加选项加答案了,查找效果如下:
第四步:在替换处填写需要的格式
上边已经用小括号分别括好了题目、各个选项和答案,在替换处就可以用“\1”、“\2”、“\3”等去代替相应括号的内容。\1代表第一个括号内的内容,即为题目,\2代表第二个括号内的内容,即为选项A,后边以此类推。
如果要向把在Word中的制表符替换成在Excel中的换行(Ctrl Enter),在Word中是无法操作的,我们只能先将制表符^t替换成一个与原文内容无关的字符,比如说一个生僻字(龥、隝等等平常根本不会用到的字),然后在复制到Excel中后,再将这个字替换成Excel的换行。本例我们就在替换处写为“\1龥A.\2龥B.\3龥C.\4龥D.\5龥”
第五步:粘贴到Excel中,并将代表换行的生僻字换成换行
在Excel的查找替换对话框中,查找处输入“龥”,在替换处按下键盘的“Ctrl Enter”或者“Ctrl J”,这时在替换处会有一个小点闪烁,切记不是在替换处输入“Ctrl Enter”或“Ctrl J”,这样就完成了题目要求的效果。
今天,我们在Excel中利用Word的通配符,学习在Excel中单元格文本的提取、格式的调整等功能,在Excel中利用Word的通配符的方法比较简单,但是写出能符合匹配要求的表达式是个比较难的工作,小伙伴们要在实际场景中多加练习才能更快更准确地写出表达式,今天的分享就到这里,下次我们分享一下在ExcelVBA中使用正则表达式的使用方法。
联系客服