目录
1 问题:如何根据多条件查询到想要的内容
2 方法总结
2.1 方法1: sumif() 和sumifs() 适合查找符合条件的多个数值之和
2.2 方法2:使用lookup(1,0/((区域1=条件1)*(区域2=条件2)*....),结果查询区域)
2.3 方法3:使用 index()+match()+数组公式
2.4 方法4:vlookup()+if()+数组公式
1 问题:如何根据多条件查询到想要的内容
- 比如下面的问题
- 需要同时根据3个条件来查询,其他列D,E的内容
- 一般情况下,match(), vlookup都只能支持单条件查询
2 方法总结
下面的数组公式其实尽量不要直接用整列,算起来会有点慢,锁定要查的列的上下限更节省一些
如果是需要查询符合条件的多个数字之和
- 使用sumif() sumifs() 可查询和汇总数字,支持汇总多条符合条件的数据之和。
- 使用sumif() sumifs() 无法查询文本,会返回0
如果是需要查询符合条件的 数字/文本string,有且只有1个
- 使用lookup(1,0/(),range())
- 使用match(条件1&条件2&条件3,区域1&区域2&区域3,0)
- 使用vlookup(条件1&条件2&条件3,if({1,0},区域1&区域2&区域3,结果区域, 偏移列数, false)
2.1 方法1: sumif() 和sumifs() 适合查找符合条件的多个数值之和
- sumifs() 只适合查找数字,
- 查数值不光可以查1个数据,还可以汇总多个符合条件的数据之和
- 但是不适合查找文本字符串类型的内容,查找文本只会返回0
2.2 方法2:使用lookup(1,0/((区域1=条件1)*(区域2=条件2)*....),查询区域)结果查询区域)
- 这个要特别注意,1,0的用法
- lookup(1,0/((区域1=条件1)*(区域2=条件2)*....),结果查询区域)
- 要注意,分母的多个条件是要大括号括起来一起
- 要注意,分母的多个条件是要相乘的关系
- 原理解释
- 符合条件的分目为1,0/1=0,而不符合条件的分母为0,0/0
2.3 方法3:使用 index()+match()+数组公式
- 也使用了辅助列的方法
- &&&可以直接做辅助列,和被查询多列作为区域
2.4 方法4:vlookup()+if()+数组公式
- 神奇之处,在于用了if({1,0},区域1,区域2)
- 因为{1,0}是个数组,而if({1,0},区域1,区域2) 就表示多个区域的组合,这样可以任意组合任何区域!
- 公式IF({1,0,0},A:A&B:B&C:C,E:E),2 中{1,0,0}是个数组,
也就是让if执行3次,然后再吧这次的结果加起来形成一个新的区域
IF({1,0,0} 必须第1个是1,因为要以查询的index区域开始向右查询,这个是vlookup的特性
然后后面的数字2,3是指vlookip要便宜的列数量,这个需要对应{1,0,0}来
比如对于{1,0,0},前面1列是合并后的A&B&C列,而第2,3列都是E列
比如对于{1,1,0},前面1列是合并后的A&B&C列,而第2也是是合并后的A&B&C列,只有第3列都是E列