Hello,大家好,今天有一个粉丝发来一些数据说想要我帮忙提取下姓名以及工号,心想这个简单2分钟的搞定,但是一打开数据我凌乱了,如下图,他在一个单元格中输入了姓名工号职位以及姓名,这样的数据将近400个,我尝试用快速填充来提取数据,结果得到的结果是这样的,如下图,只能用别的办法了,下面就来看我如何解决的把,这篇文章主要是跟大家分享下解决问题的思路
一、提取工号
在这只有工号这一个数值,我们可以利用word使用通配符将所有的文本全部替换为空,仅仅保留数值即可
首先我们将数据复制进word然后按快捷键ctrl+h调出替换窗口,在查找内容中输入[!0-9]
在替换为中什么都不要输入然后点击更多勾选使用通配符点击确定,这样的话我们就将所有的文本都替换掉了,仅仅保存了数值我们将数值粘贴回excel即可,至此我们就批量的将工号提取出来了
二、提取姓名
我们观察数据后发现都是先输入类别然后输入具体的内容,比如工号是类别,数值是具体的内容,在这里一共有四个类别,我们现在要做的就是将姓名单独提取出来,也就是将姓名与性别、职位以及工号这三个字段剥离开就好了
查找姓名我们可以使用find函数来查找名这个字在单元格中的位置,然后使用mid函数截取名后面的三个字符,员工的名字一般都是2个字或者3个字的,当然了名字也有四个字的这个比较少见。还好他公司的人员姓名没有4个字的,默默窃喜。在这里我们截取名后面的3个字符,我们只需要将公式设置为MID(A2,FIND("名",A2)+1,3),然后点击回车向下填充公式即可,结果如下图
如果名字是三个字的话我们正好可以得到准确的结果,但是如果名字是两个字的话就会提取到类别中的第一个字,比如我们提取到的张飞职,就多出来了一个职位的职,既然是这样的话我们就将结果的最后一个字符提取出来看下它是不是等于类别的第一个字符,在这里我们需要用到数组公式,所以我们需要按ctrl+shift+回车三键填充公式,我们将公式设置为
OR(RIGHT(C2,1)={"职","性","工"})
在这里我们使用right函数提取字符串的最后一位文本,然后让他等于类别的第一个汉字,因为这个是一个数组公式所以提取出来的文本会与这3个汉字分别计算一次
最后我们在函数的外面加上or函数,就代表只要有一个条件是成立的,函数就会返回true这个结果
如果结果返回true就代表这个名字可能是两位的(因为还有可能名字的最后一位正好与类别的第一个字是一样的),如果返回false就代表这个姓名我们提取的是正确的。所以我们使用if函数来帮助提取数据,如果条件成立就使用left函数从左提取两位字符,如果条件不成立就返回这个字符本身。只需将公式设置为IF(D2,LEFT(C2,2),C2),这样的话我们就可以提取到的姓名了
使用这个方法提取姓名美中不足的是如果姓名的最后一个字与类别的第一个字是相同的那么我们提取到的名字就是错误的,所以还是需要大致的浏览下数据,在这里我们是分三步将名字提取出来,其实我们可以将函数组合在一起,这样的话在一个单元格中即可得到结果,组合后的函数为
=IF(OR(RIGHT(MID(A2,FIND("名",A2)+1,3),1)={"职","性","工"}),LEFT(MID(A2,FIND("名",A2)+1,3),2),MID(A2,FIND("名",A2)+1,3))
以上就是这篇文章的全部内容了,这个文章的主旨是要告诉大家解决问题的方法以及思路:分析数据,寻找规律,剥离数据,一步一步的靠近目标,达到自己想要的结果