欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
朋友们好,今天和大家聊一聊最大模糊法查询。在实际工作中我们经常会遇到这样的情况,要求根据简称的名称来查找全称。而这个操作却是比较令人头疼的。使用最大模糊法查询,也只能最大可能地确保准确。受限于源数据的实际情况,也并不能确保能够百分百准确。
今天的题目是这样的:
A列中是全称名称,现在要根据C列 中的简称,来返回A列中的全称。
如何构建公式呢?
01
最大模糊法查找全称
所谓最大模糊法,就是要尽可能多地找到简称和全称中相同的数据。相同的数据越多,可能性就越高。
在单元格D2中输入下列公式,三键确认后向下拖曳即可。
=LOOKUP(1,0/FREQUENCY(-9^9,MMULT(ISERR(FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10))-1,ROW($1:$5)^0)),A$2:A$10)
本质上讲,这还是LOOKUP函数的经典应用。下面详细来介绍一下这条公式。
MID(C2,COLUMN($A:$E),1)
想要查找形同内容,首先要把简称中的每个字符都要提取出来。MID函数返回的结果是{"人","大","","",""}。
MID函数就可以完成这个操作。但是要注意,这里MID函数的第二参数要用COLUMN函数。原因下面讲。
FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10)
利用FIND函数将上面MID函数提取到的数据在源数据中查找。
由于源数据是一个按行排列,这时形成一个9行5列的二维内存数组,FIND函数返回的结果是{#VALUE!,#VALUE!,1,1,1;#VALUE!,#VALUE!,1,1,1;#VALUE!,7,1,1,1;#VALUE!,#VALUE!,1,1,1;#VALUE!,#VALUE!,1,1,1;#VALUE!,6,1,1,1;#VALUE!,6,1,1,1;#VALUE!,5,1,1,1;3,5,1,1,1}。
ISERR(FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10))
利用ISERR函数将错误值转换为TRUE,将数值转换为FALSE。
ISERR(FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10))-1
减去1后所有的TRUE都变成0,所有的FALSE都变成了-1。这时“-1”就代表了那些找到的数据。
这部分返回的结果是{0,0,-1,-1,-1;0,0,-1,-1,-1;0,-1,-1,-1,-1;0,0,-1,-1,-1;0,0,-1,-1,-1;0,-1,-1,-1,-1;0,-1,-1,-1,-1;0,-1,-1,-1,-1;-1,-1,-1,-1,-1}。
由于是要定位找到最多的那一个,因此后面会要使用到FREQUENCY函数。而根据FREQUENCY函数的特点,它是定位大于等于查找值的最小的那个,因此上面一步不能写成1-ISERR(),因为如果这样写那合计的最小值就是0了。
MMULT(ISERR(FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10))-1,ROW($1:$5)^0)
接下来利用MMULT函数矩阵求和,看看简称中拆分出来的每个字符在源数据中每行上找到的次数的合计值。它的结果是{-3;-3;-4;-3;-3;-4;-4;-4;-5}。
以“人大“为例,这个含义是:
在源数据第1、2行上没有找到”人“或者”大“这两个数据。得到”-3“这个值是因为MID(C2,COLUMN($A:$E),1)提取了3个空值。而FIND函数在查找时返回”1“表示查找到,但这是无效数据,公式的结果没有影响。
在源数据第3行上,找到了“大”和3个空值,所以返回-4。
在源数据第9行上,同时找到了“人”和“大”,以及3个空值,所以返回-5。
FREQUENCY(-9^9,MMULT(ISERR(FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10))-1,ROW($1:$5)^0))
接下来就可以利用FREQUENCY函数来定位找到最多的那个(也就是最小的那个)。
这部分的结果是{0;0;0;0;0;0;0;0;1;0},你看,在“-5”的位置上标记了“1”。
LOOKUP(1,0/FREQUENCY(-9^9,MMULT(ISERR(FIND(MID(C2,COLUMN($A:$E),1),A$2:A$10))-1,ROW($1:$5)^0)),A$2:A$10)
再下来就是LOOKUP函数的经典应用了,不再赘述了。
本期内容练习文件提取方式:
链接: https://pan.baidu.com/s/1FRz2yIBgacoecNPY0csZIw?pwd=e3cu 提取码: e3cu
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”