在上万条数据中根据摘要查找项目名称,说实话,我有些头大!

送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

我们总是强调,在数据录入时要遵循规范录入的原则。否则,在后期的计算、统计过程中会遇到非常大的麻烦。这不,说麻烦,麻烦到!

下面是某公司项目管理部做的一个项目清单。在第一张图表中有项目摘要信息,第二张表中有项目编码和项目名称的对应信息。现在需要我们根据摘要中的信息来匹配项目工程的名称。

这个怎么可能?!两张表中没有相同的字段,在几万条信息中想要找到匹配的项目名称,可以说,几乎是不能能的事情。

但是,我们有EXCEL......

01

其实解决这样的问题还有一个思路,即最大模糊匹配。顾名思义,就是让摘要中的每一个字符都去匹配项目名称。在摘要中的字符能够最大可能匹配到某个名称就是最有可能的结果。

我们一起来看看吧!

在单元格H3中输入公式“=LOOKUP(,0/FREQUENCY(-9^9,MMULT(ISERR(FIND(MID(F3,COLUMN(A:AD),1),Sheet2!$B$2:$B$580))-1,ROW($1:$30)^0)),Sheet2!$B$2:$B$580)”,三键回车并向下拖曳即可。

思路:

  • MID(F3,COLUMN(A:AD),1)部分,对摘要提取字符。从第1、2、...30位开始,每次提取一个字符。COLUMN(A:AD)表示1-30,这个数字要足够长,能够超过最长的那个摘要的长度

  • FIND(MID(F3,COLUMN(A:AD),1),Sheet2!$B$2:$B$580)部分,对提取出来的字符在项目名称中查找。如果能够找到,FIND函数就返回位置信息(一个具体的数字),如果查找不到就返回错误值

  • ISERR(FIND(MID(F3,COLUMN(A:AD),1),Sheet2!$B$2:$B$580))-1部分,利用ISERR函数将数字部分转换为FALSE,将错误值转换为TRUE。结果再减去1后,所有能够查找得到的字符所对应的结果都变为-1,所有错误值所对应的结果都变为0

  • 利用MMULT函数矩阵相乘,得到所有“-1”的总和

  • 利用FREQUENCY函数的特性,在上述内存数组中对一个极小数-9^9来计频,在最小的那个数上计频1

  • 最后利用LOOKUP函数的经典应用来找到最符合的那个答案

这个公式的思路其实就是,将摘要中的每个字符在查找目标比对,能查找到的最多的字符的那一个查找目标就是就有可能的答案。

02

其实这个公式并不能百分百地查找到所有的答案,它只是提供了一个尽可能多地查找目标答案的方法。

最有效的解决方法还是在数据录入时就要考虑好将来你会对源数据做怎样的操作,由此,为了将来的操作更加方便高效,在数据录入时应当提前做哪些准备工作。比如说这个题目,就可以增加一列专门录入工程编码信息,这样,就可以使用VLOOKUP函数来提取相关信息了。

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

我就知道你“在看”

注意!前方有红包挡道!速点阅读原文消灭之!

推荐阅读
(0)

相关推荐