這個是典型的多條件取數,階梯條件,你首先要重新整理條件為標準格式,按我下面方法操作即可
EXCEL--多條件取值終極解法SUMPRODUCT高階應用
上次介紹了一個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對應結果 簡單得出以下數列,
123>0<=5000.1>500<=20000.2>2000<=50000.3>5000<=200000.4
到現在 事情就變得比較簡單的 這個問題抽象成數學邏輯就變成了
對1,2列資料進行邏輯與運算 其結果再乘以3列資料 由於只有一行的資料會符合要求 而其他行註定會等於0 所以對每行的運算結果求和 就是最終的X取值了
說了一大堆理論 估計很多人看不懂 我表達能力實在有限啊 看不明白的就略過吧
上面的結論 最適合的公式就是SUMPRODUCT了 這個函式其本質就是陣列求和 實際上可以分解成sum函式的陣列公式 但是它的優點就是用普通公式完成了陣列公式的效果 在這裡它最大的作用就是進行邏輯與運算和陣列求和 公式其實挺簡單
純數字版的:
=SUMPRODUCT((A1>{0,500,2000,5000})*(A1<={500,2000,5000,2000
這個是典型的多條件取數,階梯條件,你首先要重新整理條件為標準格式,按我下面方法操作即可
EXCEL--多條件取值終極解法SUMPRODUCT高階應用
上次介紹了一個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對應結果 簡單得出以下數列,
123>0<=5000.1>500<=20000.2>2000<=50000.3>5000<=200000.4
到現在 事情就變得比較簡單的 這個問題抽象成數學邏輯就變成了
對1,2列資料進行邏輯與運算 其結果再乘以3列資料 由於只有一行的資料會符合要求 而其他行註定會等於0 所以對每行的運算結果求和 就是最終的X取值了
說了一大堆理論 估計很多人看不懂 我表達能力實在有限啊 看不明白的就略過吧
上面的結論 最適合的公式就是SUMPRODUCT了 這個函式其本質就是陣列求和 實際上可以分解成sum函式的陣列公式 但是它的優點就是用普通公式完成了陣列公式的效果 在這裡它最大的作用就是進行邏輯與運算和陣列求和 公式其實挺簡單
純數字版的:
=SUMPRODUCT((A1>{0,500,2000,5000})*(A1<={500,2000,5000,2000