函数篇之Lookup(1):有合并单元格的数据查询
标签:
函数exceloffice办公技巧 |
分类: Excel |
我们都知道合并单元格会给我们的操作和计算带来很多不必要的麻烦,一般都会强调能不用合并单元格尽量不用,但是凡事无绝对,有时候不得不用,如下面这个例子。
那么如果我们想通过订单号码查找对应的型号,我们应该怎么做呢?
由于涉及到合并单元格,一些常用的查找引用函数没办法直接使用,需要一定的技巧。
我们这里先给出答案:
G2=LOOKUP("々",INDIRECT("B3:B"&MATCH($F$3,C:C,0)))
公式解析:
1. MATCH($F$3,C:C,0)。match函数大家已经很熟悉了,用来返回匹配某个值在某列中的位置,这里我们查找1010,返回行号12;
2. INDIRECT("B3:B"&MATCH($F$3,C:C,0))。Indirect函数的作用是将文本转化为其代表的区域值,这一步公式返回"B3:B12"区间,因为我们最终要返回的是型号;
3. LOOKUP( "々" ,INDIRECT("B3:B"&MATCH($F$3,C:C,0)))。这一步是重中之重,实现的功能是返回 "B3:B12"区间的最后一个文本值。如果这里不是型号,是数值的话,那么lookup函数的第一个参数还要更改成9E+307,那么为什么会这样呢?到底什么意思?
科普
认识lookup函数
一般人了解更多的是他的兄弟vlookup,加上hlookup,可谓3个火枪手,而lookup原则上可以实现vlookup和hlookup的功能,而本身更加强大,可谓大哥大。
其语法上lookup有两种形式,一个是三参数的向量形式,一个是两参数的数组形式。区别在于返回值跟查询参数在不在一列中。
要查找比较明确值的话,要求升序排列的;而不明确类似找最后一个值的话,是可以不做此要求的。
通常有2种结果:
- 当查询参数比系列中所有值都大时,其返回跟查询参数同类型的最后的一个值;
- 否则,返回系列中小于或者等于查询值的最大的一个值,这时候跟match差不多。
注:lookup函数支持忽略空值、逻辑值和错误值来进行数据查询
回到刚才的例子,我们正是用了一个字符里面最大的 "々"来获取 "B3:B12"区间的最后一个文本值,为什么是B3756呢?因为B10~B12都为空,最后一个字符那就是B9,即 B3756,为本案例的需要的答案。
有人看到这里可能会问了,我特么怎么知道 "々"是最大字符呢?这个涉及计算机的编码技术和排序方法,相当复杂, 如果真要把这个问题掰扯清楚,都可以出一篇专业论文了。 如果按照汉语拼音排序的话,应该是zuo最大,很多时候确实能够得出正确结论,没毛病, "咗" 是最大的汉字,至于 "々"到底是个什么鬼,日语?片假名?叠词?总之我们把它当作最大的字符记住就好了。这么个怪胎要怎么输入啊?其实有些输入法是有的,它的code是41385,我们在PC上可以配合数字小键盘敲出来,实在不行,就死记硬背吧。
至于查询参数是数值型时,最大值是9E+307,这个又是怎么来的?据说这是计算机能够输入的最大数值,也就是9*10^307,999999999999999999999999
好了,今天的lookup函数讲解先告一段落,后续有机会出更多的例子来说明,敬请关注。
---------------------------
运营:Excel365
如有转载,请务必注明出处,否则以侵权投诉,喜欢的就点赞|分享|收藏吧

加载中…