gnodeuy来信说:用vlookup函数查询介绍人的时候,在介绍人下面所有的人员信息都要出来,但是vlookup的唯一性限定了只能显示第一行的信心(这里把“信息”写成了“信心”),请问怎么解决?
在源数据表中,每一位“介绍人”都对应了多位“业务员”。乍一看,这的确不是原生态Vlookup所擅长的领域,因为它总会以第一个被找到数据作为最终的匹配数据。想想也是,在它的四个参数中,并没有一个参数是用于指定以第几个匹配到的数据为准的。所以,当有三个“许新民”同时存在时,很自然的,它只能默认为匹配首个,也就是行数最小的那一个。这就表示,数据“许新民”只能匹配到业务员“杨丽丽”,而无法找出“马联合”和“王晓艳”。
那么,是有如神一般存在的哼哈二将之一的Vlookup不够用吗?当然不是!作为专业从事匹配工作的函数,Vlookup只是需要一些额外的辅助。
首先需要明确一点:在使用Vlookup时,用于匹配的数据必须是唯一的。举个例子,全中国叫老王的人不计其数,男的老王就少了一些,成都的男的老王就又少了一些,成都的男的老王还在30岁以下的又少了一些,成都的男的老王还在30岁以下并且是电子科大毕业的又会再少一些。如此将属性拓展下去,终能定位到唯一的“老王”。
Excel中的数据也是一样,“许新民”虽然有三个,但如果能给它们分别编号,变成“许新民1”、“许新民2”、“许新民3”,就相当于创造了唯一的识别码。再用Vlookup时,就能精确地匹配到了。
于是,出现了一个有趣的现象,完成该任务的关键并不在Vlookup和Countif该如何使用。因为这两个函数,知道就是知道,不知道翻翻函数类别,挨个儿看,也能知道。至于用法本身,Excel有帮助文档,写得清清楚楚。而该任务的关键在于,第一:是否懂得A$2:A2动态引用的写法,这是创造正确编号的核心;第二:是否听说过"&"符号的存在,这是合并多字段的必要手段。当然,你也可以用更复杂的Concatenate函数。掌握了这两个看似不起眼的小技巧,后面的路,才能继续往下走。
注:函数的学习,不是死记硬背函数名称和用法,而要掌握函数运用中的关键小点,以及它们在整个函数体系中所发挥的特殊作用。如:使用"&"就能辅助完成多条件求和,多条件匹配,多条件……
在这里,用公式=COUNTIF(A$2:A2,A2)为每一行的“介绍人”编上不同的号码。
有了这些号码以后,原本一模一样的“介绍人”现在也各有各的特色了。在A列的左侧插入一个新列作为A列,公式写为=B2&D2。
之所以要将合并的字段作为首列,是为了满足Vlookup只在选定数据区域的首列进行匹配的“潜规则”(我在过来人公开课讲《Excel潜规则》http://www.glr.cn/mooc/2437)。技巧高超的用户可能会说:不用在首列,我会用公式转换数据区域。但我觉得,杀鸡焉用牛刀,除非万不得已,插入一下既简单,规则又清晰,何乐而不为。用Excel一定不是炫技,而是以自己最舒服的方式快速解决问题。有那多出来的精力,抛开Excel,专研些自己的大爱好,享受下生活也挺好。
OK!都准备好了,最后一步——Vlookup多条件匹配。可以先做一个序列,用于呈现多个“业务员”,也以此作为Vlookup第一参数的一部分,也就是多条件的条件之一,公式写为:=VLOOKUP(G$5&$F7,A:D,3,0)。之后,只要输入“介绍人”,“介绍人”+“编号”就能精确匹配到唯一的“业务员”。
如果熟悉Row函数,公式也可写为:=VLOOKUP(G$5&ROW(A1),A:D,3,0),就不用制造序列了。不过,从视觉效果来看,序列倒是起到了计数的功能,瞄一眼就知道该“介绍人”下面有几个“业务员”,不失为好事一桩。
这就是使用Vlookup做一对多匹配的思路和小创意。