很多時候,我們都會在公式中設置邏輯測試,然后讓Excel來自動判斷并計算結果。換句話說,只要你設置好條件以后,Excel來幫你決策并執行相應的計算操作,返回相應的結果。從這個意義上說,邏輯測試為Excel增添了智能功能。
下面,我們來詳細解Excel中的邏輯測試,為熟練編寫Excel公式打好基礎。
通常,我們在IF函數中使用邏輯測試,根據測試結果來選擇相應的計算。如下圖1所示的工作表,當水果銷售額大于1000時,就給2%的提成。
上面兩個表是基本的邏輯測試真值表,其原理很好理解。在此基礎上,可以很容易地擴展到多個條件的邏輯測試。
Excel邏輯測試規則
在Excel中,當需要多個邏輯測試時,往往會使用到AND函數、OR函數或者NOT函數的組合。例如,對本文開頭提到的例子,如果要求銷售額大于1000并且利潤率大于50%時,才給2%的提成,在單元格D2中的公式如下:
=IF(AND(B2>1000,C2>0.5),B2*0.02,0)
下拉至單元格D12中即可。
再復雜一點。
如果銷售額大于1000并且利潤率大于50%時,才給2%的提成,并且銷售的火龍果都給提成,那么在單元格D2中的公式如下:
=IF(OR(AND(B2>1000,C2>0.5),A2=”火龍果“),B2*0.02,0)
下拉至單元格D12中即可。
簡化之美
在應用Excel邏輯測試規則時,可以簡單地將邏輯測試相乘來表示AND函數。例如,要求銷售額大于1000并且利潤率大于50%時,才給2%的提成,此時,單元格D2中的公式可以簡化為:
=(B2>1000)*(C2>0.5)*B2*0.02
下拉至單元格D12中即可。
仔細體味一下,對于公式中的(B2>1000)*(C2>0.5),計算結果總是0或者1,即不能獲得提成時是0,能夠獲得提成時是1,因此,可以直接乘以銷售額和提成百分比。
不是所有的邏輯都能簡化
如果按照上文提及的方式,將OR操作簡化為+號,可能會帶來問題,因為在有些情況下,邏輯測試的結果會大于1,這會導致計算結果出錯。
例如,如果銷售額大于1000并且利潤率大于50%時,才給2%的提成,并且銷售的火龍果都給提成。如果簡化為公式:
(B2>1000)*(C2>0.5)+(A2=”火龍果“)
當火龍果的銷售額大于1000且利潤率大于50%時,會得到結果2。此時,如果再與銷售額和提成率相乘,結果會擴大一倍,即結果不正確。
因此,對于OR操作應用簡化方法時應謹慎。對于上例,可以使用下面任一公式:
=IF((B2>1000)*(C2>0.5)+(A2=”火龍果“),TRUE,FALSE)*B2*0.02
=IF((B2>1000)*(C2>0.5)+(A2=”火龍果“),1,0)*B2*0.02
結語
要精通并熟練編寫帶條件的Excel計算公式,就需要理解邏輯運算原理和Excel的邏輯測試規則。在Excel中,可以使用*號來代替AND函數,使用+號來代替OR函數。