课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
Excel--多条件取值终极解法SUMPRODUCT高级应用
Excel880
2016-08-15 14:07
上次介绍了一个lookup进行多条件判断取值的解法,不过今天突然发现那个解法有个严重的缺陷,就是只能解a<=A<b,就是当条件都是大于等于较小值且小于较大值的情况,今天又有人问了一个a<A<=b 及大于较小值而小于等于较大值的多条件 那个公式在节点上就判断不准了,我又实在不想用if函数去做,嵌套一大堆得if 看着都累,先后试验了vlookup,Hlookup,match,发现它们的内在原理都是一样的 没办法只好请出SUMPRODUCT大神了
实例如下
输入500>=a1>0 的数的时候,B1显示为A1*0.1
输入2000>=A1>500 B1显示为A1*0.2
输入5000>=A1>2000 B1显示为A1*0.3
输入20000>=A1>5000 B1显示为A1*0.4
有人会说 这还不简单那 几个if就可以了 恭喜你 答对了! 但是我现在要做的是 如果有N个以上这样的条件 你还能if么,那公式写出来只怕累死你 而且if只能嵌套7层的,其实我最想做的是将公式简化 简化成容易理解容易使用的形式 废话少说 开始分析
1、本问题核心是A1*X,X的取值根据A1的范围变化,好了 核心就是求X
2、抽出A1条件和X对应结果 简单得出以下数列,
1 | 2 | 3 |
>0 | <=500 | 0.1 |
>500 | <=2000 | 0.2 |
>2000 | <=5000 | 0.3 |
>5000 | <=20000 | 0.4 |
到现在 事情就变得比较简单的 这个问题抽象成数学逻辑就变成了
对1,2列数据进行逻辑与运算 其结果再乘以3列数据 由于只有一行的数据会符合要求 而其他行注定会等于0 所以对每行的运算结果求和 就是最终的X取值了
说了一大堆理论 估计很多人看不懂 我表达能力实在有限啊 看不明白的就略过吧
上面的结论 最适合的公式就是SUMPRODUCT了 这个函数其本质就是数组求和 实际上可以分解成sum函数的数组公式 但是它的优点就是用普通公式完成了数组公式的效果 在这里它最大的作用就是进行逻辑与运算和数组求和 公式其实挺简单
纯数字版的:
=SUMPRODUCT((A1>{0,500,2000,5000})*(A1<={500,2000,5000,20000})*{0.1,0.2,0.3,0.4})
别看这觉得吓人 其实你几个括号的值和上面的数列一对比 就很简单了
实际使用的时候 可以用单元格区域代替{}例如
0 | 0.1 |
500 | 0.2 |
2000 | 0.3 |
5000 | 0.4 |
20000 |
这是F9:G13的单元格区域 公式就相应改为
=SUMPRODUCT((A1>$F$9:$F$12)*(A1<=$F$10:$F$13)*($G$9:$G$12))
这里 当你的条件更多时 一样可以套用这个公式 只要把条件区域做相应改变即可
到此为止 这就算出了对应X的值 剩下的就是在公式前面加上A1*即可了
实例截图如下
SUMPRODUCT实乃excel函数中大神 经常可以用它来完成一些不可思议的任务