01
今天从知乎上看到了一个关于HLOOKUP的问题,是从一行数据中查找并匹配,相当于是对VLOOKUP函数做了一个转置处理,变成横向查询匹配。但这个其实很简单,我突发奇想,可不可以换个其他的函数呢?
说干就干,首先就想到了与查询匹配相关的几个函数:CHOOSE、SWITCH、FILTER这三个。其实这几个函数都是以前有听过,但从来没用过,所以我都还不知道具体的用法,于是去官网搜了下这几个函数的具体用法,并分别用这个做出结果。
但在以上过程中我发现,CHOOSE必须要选一个条件,选一个结果,再选一个条件,再选一个结果,意味着要写特别多遍参数,很复杂。而SWITCH函数呢,虽然可以连选作为数组去匹配,就像这样:
=SWITCH(I13,A3:J3,A4:J4),很干脆利落,但遗憾的是,它返回的值也是数组,如果要只展示单一数值,还需要多一步。
于是,我将目光放到了最后的FILTER函数身上,意外的,FILTER函数很简单就做好了,其实这就是知识的拓新,通过一些已有的知识,想到用其他方式去解决。
你以为这就结束了嘛,当然……还没有结束。
02
因为我选的是查找数字对应的字母,一开始只给了一行10个,那既然都到了这一步,继续挑战一下,多做两行,第1-2行是1-10和对应的字母,第3-4行是11-20和对应的字母,第5-6行则是21-26对应的字母。
那么在这种情况下,我们并不能确定该在哪一行去查找对应的数据,又该怎么处理呢?这个时候我又发现了,FILTER函数没办法去写多个条件的,只能够选一个范围,于是我再次回到了开始时,可以选择范围,又可以多选的SWITCH函数上,多加了几个范围的条件,变成了这样:
=SWITCH(B10,A3:J3,A4:J4,A5:J5,A6:J6,A7:F7,A8:F8)
惊喜的是,最终返回来的数组,是只有包含查找值的那一系列数组,而不会包含其他两行内容。那么接下来就简单了,我们的问题就变成了从一个一维数组中,忽略掉错误值,找到那唯一一个正确的内容。
到这里呢,其实前面的部分,都是知识的拓展,从已有的知识点,不断去延伸自己的思考,发散思维,根据自己的所想,去挖掘更多的知识点,从而学到更多。
03
那么接下来呢,问题还是要解决,这里关键来了,就是要支持数组的计算。而最常见的可支持数组运算的函数,要么是SUMPRODUCT,要么是LOOKUP,要么是四则运算。而这里,结果是字母,并不是数字,肯定不能做数学运算,那么就只剩下了LOOKUP函数了。
接下来就简单了,因为以前我的现有知识库中就有,LOOKUP可以用来查找一系列数据中的最后一个数字,也可以查找最后一个非空单元格。那么这个知识点迁移过来,不就正好可以套用在这里了嘛。
于是问题就自然而然地解决了。最后的最后,因为这是有知识点拓展的案例,还需要找到对应的真实可用的案例,才能够算是真正将这一点内容消化完毕。
04
这其实就是知识的迁移,将自己以往的对于LOOKUP函数已有的认知,能瞬间关联到当前的问题当中,而这,也是要求我们对已有的一些知识点,能够有一定的了解,能真正理解这个知识点。
总结一下,其实今天的这整个过程,其实就是先由已有知识,拓展新的解法,再拓展新的用法,最后再由已有的一些知识点做迁移,举一反三地来解决这个新的问题。这就是一个值得我以后学习的过程,希望也同样对大家有所帮助。
网友评论