欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天来和大家分享一道文本题目。通过这道题目,今天要向大家介绍一个非常有用的小函数,虽然不出名,但是却很有用。
原题目是这样子的:
根据全员名单来列出未参会的人员名单。这个该怎么弄?所有文本都写在同一个单元格中,这样根本无法做任何操作。
因此首先要将所有的名单都提取出来。提取出来后再进行数据的对比,找出缺席者。
01
CODE函数的巧妙应用
将姓名提取出来,我们可以使用FILTERXML函数。之后我们要统计缺席者,却不能使用COUNTIF函数,因为它的第二参数不支持数组。可以考虑使用FREQUENCY函数。但是由于姓名都是文本,不能直接使用FREQUENCY函数,需要借助一个小函数来将文本转换为数字- -对,就是CODE函数。
在单元格D5中输入下列公式,确定后并向下拖曳即可。
=IFERROR(IF(FREQUENCY(CODE(FILTERXML("<a><b>"&SUBSTITUTE(B6,"、 ","</b><b>")&"</b></a>","a/b")),CODE(FILTERXML("<a><b>"&SUBSTITUTE($A$2,"、","</b><b>")&"</b></a>","a/b")))=0,FILTERXML("<a><b>"&SUBSTITUTE($A$2,"、","</b><b>")&"</b></a>","a/b"),#N/A),"")
思路:
利用FILTERXML函数分别对单元格A2和单元格B5中的姓名提取出来,这里就不再详细介绍了,请参看相关的关于FILTERXML函数的帖子
在它们的外侧,嵌套一个CODE函数。此函数专门将文本字符串的第一个字符转换为内码字符,成为一组数字
这时候就可以利用FREQUENCY函数来进行计频了。没有被计频的就是未列席的名单
利用IF函数和IFERROR函数将不需要的数据都转换为空值,结果是{"";"";"";"";"";"孙权";"关羽";""}
公式只能写到这里了。由于没有TEXTJOIN函数或者CONCATE函数,这里没有特别好的办法它们用公式合并在同一个单元格中。如果是在高版本中,这个操作非常的简单。
本期内容练习文件提取方式:
链接:https://pan.baidu.com/s/1xKx3TnbfkbaS7j0178oM2w?pwd=d8uo
提取码:d8uo
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”