在使用Excel公式解決實際問題的時候,經常會遇到各種判斷、比較,這些判斷或者比較的結果只有兩種,對或錯,對在Excel中用TRUE表示,錯用FALSE表示,TRUE和FALSE就是Excel中的邏輯值。邏輯值只有這兩個!
邏輯值從哪來
例如:判斷單元格的數據是否為文本,可以使用函數ISTEXT(A1),例子中得到的結果就是TRUE。
再比如,判斷單元格的數字是否為偶數,可以使用函數=ISEVEN(A2),中得到結果是FALSE。
在實際應用中,所遇到的判斷還有很多,Excel中可以用來做判斷的函數除了剛才介紹的兩個,還有很多,這類函數有一個共同的特點,都是IS開頭的,所以也被稱作IS 函數,我們可以在單元格中輸入=IS,就能看到這些函數,滑鼠選中對應的函數,就會有個簡短的說明:
這裡給大家一個建議:在你輸入某個函數的過程中,不妨將滑鼠停留在提示的其他函數上,大致了解一下對應函數的功能,不管是不是用的到,多認識幾個函數,對今後的好處都是不可估量的。
除了通過這些函數做出判斷得到邏輯值,還有一種情況就是做比較。
Excel裡有六種比較運算符:=(等號)、>(大於號) 、<(小於號) 、>=(大於等於號) 、<=(小於等於號) 、<>(不等號) 。
提示:Excel中大於等於是>=,不是≥,小於等於是<=,不是≤,不等於是<>,不是≠。
例如:比較單元格的數字是否大於60;
比較單元格的內容是否等於某個具體內容;
實際上,比較運算也是一種判斷。
以上我們介紹了什麼是邏輯值,以及邏輯值從何而來,接下來要了解邏輯值和數字的對應關係。
邏輯值與數字
我們使用Excel更多的是進行數據處理,因此處理對象為數字的時候就會有很大的優勢,對數據進行各種統計是Excel最常用的功能之一,例如:求和、計數、平均值、最大值、最小值,還有根據指定條件對數據進行統計,這能給我們的工作帶來更高的效率。
以上只是為了說明Excel在處理數字型的數據是有優勢的,那麼邏輯值和數字之間有什麼關聯呢,了解這一點,才能更好的讓邏輯值為我們服務。
邏輯值與數字有本質的區別,它們之間沒有絕對等同的關係,但邏輯值與數字之間允許互相轉換,在說明邏輯值和數字的轉換之前,我們先來學習一個函數:N函數
我們通過N函數對一類數據轉換的結果來看看這個函數具體是什麼作用:
可以看到,通過N函數,可以把所有的數據都轉換為數字,原來是數字的,轉換後不發生變化,原來是文本的,轉為0,邏輯值中,TRUE被轉為1,FALSE被轉為0。
由此我們得知,在單元格公式中:N(True)=1、N(False)=0。也即:TRUE對應1,FALSE對應0。
在實際應用中,我們並不是使用N函數將邏輯值轉化為數字,而是直接使用邏輯值參與計算,例如:
這是使用了乘法運算,True+1=2、True+False=1、3*False=0;
也就是說:邏輯值可以通過函數轉化為數字,也可以通過運算(主要是加減乘除)轉化為數字。
通過以上介紹,可以了解到邏輯值到數字的對應關係是一對一的,也即true對應1,false對應0。
但是反過來,數字到邏輯值的對應關係卻不是一對一的,對應關係是這樣的:0對應false,只要不是0的數字,都對應true,關於這一點,我們會在後面講解if函數的時候再進行驗證。
至此,我們認識了邏輯值:TRUE和FALSE;也了解邏輯值從何而來:通過is類函數進行判斷或者通過比較運算得到邏輯值;還有邏輯值對應數字的關係:TRUE對應1,FALSE對應0。下面就來看看邏輯值在實際應用中都有哪些妙用。
邏輯值的妙用
例一:根據部門編序號
先來分析這個問題的特點:相同的部門都是在一起的,當部門發生變化序號對應增加1。
如果這個問題給一個函數高手來做,很可能會寫一個這樣的公式:=SUMPRODUCT(1/COUNTIF(B$2:B2,B$2:B2)),實際上,這個問題可以利用邏輯值的特性來解決:=(B1<>B2)+N(A1)。先驗證一下公式的正確性:
再來分析一下思路:
對B列進行上下位置的比較,可以發現,結果為TRUE的位置就是需要序號增加1的位置,結果為FALSE的位置,序號不需要變,直接等於上一個單元格的序號即可。
也就是這樣的效果,需要解釋兩點:
1、這裡用到了一種公式設計時常用的思路,就是利用上一個單元格的數據進行疊加計算,如果A1為空,在進行加法運算的時候被看作是0,就有了這樣的結果。
2、比較運算的優先級低於加減乘除運算,所以要加括號。關於運算順序,大家可以根據這張表去理解。
在本例來說,A1不為空,所以使用N函數進行處理,就有了=(B1<>B2)+N(A1)這個公式的誕生。
公式看上去很簡單,但是要想到就真的不簡單了。
再來看一個階梯價計算的問題。
例二:某地天然氣實行階梯收費方式,300方以內(含300方)每方1.7元,300-500方以內(含500方),每方為2元,500方以上,每方2.5元。
這個問題可以寫出很多個公式來計算,今天我們只看使用邏輯值的計算方法:=E2*1.7+(E2>300)*(E2-300)*0.3+(E2>500)*(E2-500)*0.5
對於這類問題,用邏輯值的做法非常簡單,有規律可循,而且不需要使用函數,首先換個角度來看看階梯價格的計算方式,我們用這個表格來進行說明:
這個圖更直觀的體現出了階梯的含義。
這個問題是三級定價,所以公式實際上也是三部分組成:E2*1.7、(E2>300)*(E2-300)*0.3、(E2>500)*(E2-500)*0.5;
不管實際用量是多少方,1.7的部分肯定都有,所以E2*1.7必須有,這可以理解為1級收費;
再往上的話,超過300的部分,0.3肯定都是有的,這裡就有一個比較了,E2>300,如果實際用量小於等於300,這個比較的結果是FALSE,這部分計算結果為0;反之,如果是大於300的話,(E2-300)*0.3正好就是超過部分加收的金額,與第一級收費相加構成了二級收費的結果;
第三部分同樣,判斷實際用量是否超過500,如果不超過,這部分整個為0,超過的話,按0.5進行加收(注意這個0.5是與前一級的差額而不是與第一級的差額);
明白這一點以後,不過多少級定價,只要找到合適的比較值,以及加收的單價,就能計算出最終的階梯價格。
這種方法繞過了if函數的多層判斷,在級數較少的時候非常方便,可以使用這個思路去試試計算個人所得稅(7級),可能公式會長一點,但是容易理解。
例二相對於例一來說,更容易上手,例一過於取巧了。下面再來看幾個難度適中的例子
例三:本地生源在初試成績的基礎上增加10分,異地生源的最終成績就是初試成績。
這類問題一般都用if解決了:=IF(C3="本地",B3+10,B3)
其實這種問題用邏輯值完全可以解決,下面就通過這個例子,讓我們來一步步了解邏輯值的魅力吧。
在這個問題中,只有一個判斷,就是C3="本地",
通過這個判斷,可以把是不是本地的區分開,接下來的一步很重要,怎麼利用這個邏輯值呢?
讓我們再來回顧一下這個問題的規則和邏輯值與數字的對應關係:本地加10分,異地加0分;true對應1,false對應0;1*10=10,0*10=0。
好像領悟到了什麼,馬上來試試:
到了這一步,那麼結果改怎麼完成,答案已經呼之欲出了。
讓我們來完成最後一步:
最後的公式為:=B3+(C3="本地")*10
這個問題我們用了三個輔助列來說明過程,將解決問題的過程使用輔助列來一步一步分解,最後再合成一個公式,對於新手學習函數嵌套來說非常有用。
與例三類似的,我們再看一個例子:
這是一張工資表,需要計算每個人的補貼金額,補貼的發放規則為:高工補貼為200,工程師補貼為100,其他崗位補貼0。
對於這個問題,用邏輯值來計算補貼的公式為:=(B3="高工")*200+(B3="工程師")*100
小測試:
通過以上介紹,邏輯值可以不需要函數,直接拿來計算就能解決很多問題,但是當邏輯值遇上數組,再一起配合函數使用的話,功能就會顯得無比強大,隨便拿出一些很經典的公式組合,都會看到邏輯值的影子(當然還有數組)。
上次我們學習了數列構造方法,今天學習了邏輯值,再加上下次學習的數組基礎知識,這三部分內容就是今後學習公式函數的三根支柱。
本文節選自為【老菜鳥的班】函數課程講義,想了解全部內容歡迎加入我們一起學習!
——Excel基礎學習園地
添加關注,每天收穫實用知識
看完有收穫,別忘了點讚和轉發
哦~