嗨,你那些经常做表格的表兄弟、表姨、表兄弟、表兄弟、小编辑们,有没有遇到过下面这种带区间的单价多条件查询?图01。
为了方便,我把匹配区域(A1:D10)和结果区域(F2:K4)放在了一起。
需求是查询一个品类在对应时间段的价格。
这个时间段对很多人来说真的很难。如果值是固定的,可以使用辅助列,将它们链接在一起,然后使用Vlookup函数找到它们。
但是在那个时间范围内找有点难!不要害怕,如果你知道规则,方法会困难得多。我不是在图中列出了三个公式吗?
解决方案1:
一般逻辑,既然是求返回值,我们可以用的函数有VLookup、HLookup和Lookup。Hlookup在这里不适用,所以Vlookup是“不行”的,所以用lookup,毕竟lookup还是很强大的。看公式1,图片02。
公式如下:
=LOOKUP(,0/($ A $ 3: $ A $ 10=F3)*(B $ 3: $ B $ 10=G3)*(c $ 3: $ c $ 10=G3))、D$3:$D$10)
公式说明:参数1没什么损失,参数2比较长,一步一步理顺就明白了。
比较A3:A10和F3,要求是一样的,所以用等号比较。
B3:B10与G3比较,b列为起始日期,所以必须小于等于G3。
比较C3:C10和G3,c列是结束日期,所以必须大于等于G3。
比较结果为真或假。
看测试图03。
为了比较方便,我把它们包起来,比较方便。
这个结果是怎么出来的?选择$A$3:$A$10=F3,只需按F9。后两者相同。
这个时候,你可能会有点头晕,不明白。请简单解释一下。不是分三段比较吗?
这些是比较结果,符合条件为真,不符合条件为假。
在比较结果可用后,应合并三个部分的结果。这里,*用于运算,而*是乘法运算。
只有当为真*真时,才会返回真(和的效果)。
那么我们来看看计算结果吧!图04。
咦,为什么是1和0?因为在Excel中,True可以用1表示,Fasle可以用0表示。做了数学运算后,自动转换成数字!
用0分开这些内容,以便将0转换为错误值。再看图05。
为什么要将其转换为错误值?
我们的星空女神很久以前就给Lookup函数发了一个详细的解决方案。如果你感兴趣,就去搜索并学习它。毕竟Lookup也很强大。
查找的思想在这里得到了解决。用它来求解,因为它是一个查找函数,可以返回任意值,同时帮助我们理清思路!
解决方案2:
这里我们要返回的值是一个数字,限定结果是唯一的,所以可以使用求和函数!
继续刚才的思路,改变Sum函数继续测试,看公式2和图06。
公式如下:
=SUM(($ A $ 3: $ A $ 10=F3)*(B $ 3: $ B $ 10=G3)*(c $ : $ c $ 10=G3)* $ D $ 3: $ D $ 10)
与Lookup的区别在于Lookup的D3:D10作为参数3,而*在Sum中仍然使用,原理与Lookup参数2相同!
需要注意的是,这是一个数组公式,输入后要用Ctrl Shift Enter完成,否则结果可能不正确。
使用office365(版本12722.200006)的用户不需要三个键,它可以自动识别和计算正确的值。
看到这里,你还是会说:我不想总结,该不该找?
解决方案3:
由于Sum函数可以得到结果,所以我们可以使用Sumifs函数返回所需的值。
如果使用Sumifs函数,会简单很多。请看公式图07。
第五行使用公式返回公式字符数,可以看到Sumifs字符最少(缺少行号和绝对引用符号)。
=LEN(公式文本(JBOY3乐队))
为什么这个搜索问题可以用求和函数来解决?因为它满足以下两个条件,
首先,我们需要返回的结果是数字;
第二,合格结果是唯一的。
如果其中一个不满意,就不能使用Sumifs函数!
如果通过特征来解决问题,可以得到更好的解决方案。如果想通用(比如返回的结果可能有数字和字符串),公式会更复杂(使用Lookup)!