EXCEL–多条件取值终极解法SUMPRODUCT高级应用

2016年12月27日10:55:39 评论 4,093 views
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页

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*即可了

实例截图如下

Excel--多条件取值终极解法SUMPRODUCT高级应用

SUMPRODUCT实乃excel函数中大神 经常可以用它来完成一些不可思议的任务

  • 郑广学老师微信号
  • EXCEL880B
  • weinxin
  • 我的微信公众号
  • EXCEL880
  • weinxin

发表评论

您必须才能发表评论!