Excel的邏輯運算模擬實作 - Excel運算式與公式系列(5/6)

徹底學習Excel邏輯運算的種種...

在此將為您介紹布林代數如何應用於Excel的公式中,以及深入瞭解AND和OR邏輯運算和Excel邏輯運算與陣列公式裡的布林運算。

真值表

在Excel的眾多函數中,提供有AND、OR、NOT、XOR等知名的邏輯運算函數可以進行相關的邏輯值計算。針對邏輯運算的特性,我們可以透過以下的表格(吾人稱之為真值表Truth table)一窺究竟:

算式X的值 算式Y的值 算式X與算式Y
進行OR運算
(數學運算為乘法運算)
算式X與算式Y
進行AND運算
(數學運算為加法運算)
FALSE FALSE FALSE FALSE
FALSE TRUE FALSE TRUE
TRUE FALSE FALSE TRUE
TRUE TRUE TRUE TRUE

模擬實作邏輯運算

AND邏輯

在布林代數中,數學運算只有兩種可能的結果:1或0,對應於邏輯值則是TRUE和FALSE。對邏輯值所進行的三種基本運算中,AND邏輯的執行是對應於數學的乘法。以下我們就先以乘法的算術運算式來模擬AND邏輯運算,並以Excel 的AND邏輯函數來驗證邏輯運算的結果。

任何數值乘以0的結果都會等於0;任何數值乘以1的結果,都會保持不變也是該數值。例如:以0與1的四種組合來進行乘法的算術運算,當X與Y都是1時,結果才會是1,其餘0與1組合結果都是0。同樣0與1的四種組合來進行Excel所提供的AND函數(「且」邏輯)運算後,當X與Y都是1時,AND函數傳回的結果才會是TRUE,其餘0與1組合結果都是傳回FALSE。

在Excel的公式運算中,如果針對邏輯值(TRUE和FALSE)進行算術運算時,傳回的結果會是數值1或0;進行邏輯函數的運算時,傳回的結果便是TRUE或FALSE。接著,我們再以FALSE與TRUE的四種組合來進行乘法的算術運算,當X與Y都是TRUE時,結果才會是1,其餘FALSE與TRUE組合結果都是0。同樣FALSE與TRUE的四種組合在進行AND函數(「且」邏輯)運算後,當X與Y都是TRUE時,結果才會是TRUE,其餘FALSE與TRUE組合結果都是FALSE。

所以根據上述的模擬實作,在邏輯代數中,AND邏輯是一種數學上的乘法運算。而真真假假的世界裡,若以0與1來代表FALSE與TRUE的邏輯值,在運算上是非常方便的。因此,即便AND函數的執行結果會是FALSE或TRUE值,我們也可以善用Excel所提供的雙負號運算進行轉換。雙負號運算是專門用來將邏輯值,也就是TRUE或FALSE值,強制轉換為值數1或0的運算。

OR邏輯

我們再來解析一下OR的邏輯。OR邏輯的執行是對應於數學的加法。邏輯值只有0與1兩種狀態,因此,以0與1的四種組合來進行加法的算術運算時,「0+0」的結果當然是0、「0+1」及「1+0」的結果也當然都會是1,而唯獨「1+1」的結果是2。不過基於邏輯值只有0與1兩種狀態,因此,我們來手動調整一下這個OR邏輯的加法模擬,例如:可使用IF函數進行加法結果的判別,若加法的結果大於1,便是1,否則便是0:

=IF((X+Y)>0,1,0)

如此,「當X與Y都是0時,結果才會是0,否則其餘0與1組合加法結果都是1。透過IF函數的幫忙,這個模擬OR邏輯的成果立刻可見。

當然,關係運算式的結果原本就是非TRUE即FALSE,因此,剛剛使用IF函數的加法模擬,也可以改寫成下列的關係運算式:

=(X+Y)>0

意即只要(X+Y)>0便是TRUE,否則就是FALSE。那麼,除了「0+0」不會大於0,關係運算式的結果會是FALSE外,其他「0+1」、「1+0」、「1+1」的加法運算組合結果,在關係運算式上都會大於0,因此,關係運算式的結果都會是TRUE。若將上述的關係運算式再加上雙負號運算進行轉換:

=--((X+Y)>0)

那麼這個OR邏輯的加法模擬是不是也很完美呢!

同樣0與1的四種組合來進行Excel所提供的OR函數(「或」邏輯)運算後,當X與Y都是0時,OR函數傳回的結果才會是FALSE,其餘0與1組合進行OR函數運算都是傳回TRUE。

接著,我們再以FALSE與TRUE的四種組合來進行加法的算術運算,當X與Y都是FALSE時,結果才會是0,其餘FALSE與TRUE組合結果都是1。同樣以FALSE與TRUE的四種組合來進行OR函數(「或」邏輯)運算後,當X與Y都是FALSE時,結果才會是FALSE,其餘FALSE與TRUE組合結果OR函數傳回的都是TRUE。

所以說,在邏輯代數中,OR邏輯也是一種數學上的加法運算,而我們也可以善用Excel所提供的雙負號運算進行TRUE或FALSE值強制轉換為值數1或0的運算。

(註:此Excel公式參照與陣列公式參照的實作檔案下載)