老板让我提取员工姓名的首字母,我做了1周,可同事3分钟就搞定了

一、利用word加函数提取

首先我们创建一个辅助列,输入公式=A2&' ',我们将每个姓名后面都加上空格,这样做是为了后期分列使用

然后我们将姓名粘贴进word中在选择性粘贴中选择值,紧接着我们选择这些姓名,将其加上拼音,紧接着我们按快捷键ctrl+H调出替换窗口,然后在查找值中输入^p替换为中什么都不要输入,然后点击全部替换,这样话数据都变为了一行

然后复制加上用拼音的名字,双击excel的一个单元格,注意,必须双击,然后按ctrl+v将其粘贴进excel中,紧接着选择这个单元格,然后点击分列,分列方式选择分隔符号,分隔符选择空格这样的话我们就将每一个姓名都分割为一个单元格了

然后我们选择这个数据,复制他,点击鼠标右键找到选择性粘贴,然后选择转置这样的话我们讲就姓名转换为竖着显示

紧接着我们输入公式

=IFERROR(MID( I1,FIND('#',SUBSTITUTE( I1,'(','#',1),1)+1,1),'')&IFERROR(MID( I1,FIND('#',SUBSTITUTE( I1,'(','#',2),1)+1,1),'')&IFERROR(MID( I1,FIND('#',SUBSTITUTE( I1,'(','#',3),1)+1,1),'')&IFERROR(MID( I1,FIND('#',SUBSTITUTE( I1,'(','#',4),1)+1,1),'')

最后我们使用UPPER函数将小写转换为大写字母即可

跟大家讲的讲解下函数,这个函数看起来很长其实非常的简单,

如上图,我们可以看到姓名的结构都是每个字后面是一个括号,然后括号里面是拼音,在这里理论上我们只需要查找到左括号的位置然后加1就是姓名首字母的位置,然后我们利用mid函数提取即可

但是find函数不能查找相同的字符串,它仅仅会返回查找到的第一个字符串的位置,所以我们使用四次SUBSTITUTE分别将1234个左括号替换为#号,我们来查找#号的位置来确定左括号的位置,公式比较长是因为我们使用了4次SUBSTITUTE函数,其实这四个函数仅SUBSTITUTE函数的第四参数不一样,这样的话就能分别的查找到左括号的位置提取到精确首字母,如果你懒得写公式的话,仅需将单元格的位置替换为你的目标位置即可

二、使用vba提取首字母

首先点击开发工具,然后点击visualbasic,然后点击插入选择模块,将如下代码复制进去,然后关闭,紧接着我们输入=py然后选择姓名,这样的话我们也能获取姓名首字母,在这里我们自定义了一个py函数来实现这样的操作

代码如下

Function pinyin(p As String) As Stringi = Asc(p)Select Case iCase -20319 To -20284: pinyin = 'A'Case -20283 To -19776: pinyin = 'B'Case -19775 To -19219: pinyin = 'C'Case -19218 To -18711: pinyin = 'D'Case -18710 To -18527: pinyin = 'E'Case -18526 To -18240: pinyin = 'F'Case -18239 To -17923: pinyin = 'G'Case -17922 To -17418: pinyin = 'H'Case -17417 To -16475: pinyin = 'J'Case -16474 To -16213: pinyin = 'K'Case -16212 To -15641: pinyin = 'L'Case -15640 To -15166: pinyin = 'M'Case -15165 To -14923: pinyin = 'N'Case -14922 To -14915: pinyin = 'O'Case -14914 To -14631: pinyin = 'P'Case -14630 To -14150: pinyin = 'Q'Case -14149 To -14091: pinyin = 'R'Case -14090 To -13319: pinyin = 'S'Case -13318 To -12839: pinyin = 'T'Case -12838 To -12557: pinyin = 'W'Case -12556 To -11848: pinyin = 'X'Case -11847 To -11056: pinyin = 'Y'Case -11055 To -2050: pinyin = 'Z'Case Else: pinyin = pEnd SelectEnd FunctionFunction py(str)For i = 1 To Len(str)py = py & pinyin(Mid(str, i, 1))Next iEnd Function
(0)

相关推荐