tft每日頭條

 > 健康

 > excel中if邏輯判斷

excel中if邏輯判斷

健康 更新时间:2025-04-05 15:02:03

Hi,

今天我們聊聊IF函數。人數沒有如果,但是EXCEL有。

沒有如果讓我想到了梁金茹的《沒有如果》,但是未找到原版的,湊合着聽吧。

在任何編程語言中,邏輯判斷是必不可少的。邏輯判斷決定了流程的走向。

幾乎所有的語言都用If做邏輯分支判斷,EXCEL也不例外。雖然說EXCEL不是标準的程序語言,但是在EXCEL中提供了IF函數來進行邏輯判斷。

一、IF的原理

在英文中,if的意思是如果。我們也經常說如果怎麼怎麼樣,那麼怎麼怎麼樣,否則怎麼怎麼樣。這種是比較自然的邏輯表達。

換成計算機語言的描述就是,當某個或者某些個條件成立,就執行一組語句或者程序,否則執行另外一組。

EXCEL中,IF函數的語法也非常簡單:

IF(logical_test, value_if_true, [value_if_false])

IF(條件判斷,條件成立時執行什麼,條件不成立時執行什麼)。非常簡單。

我們在EXCEL中,IF是相對常用的一個函數,用于條件判斷及執行。

二、IF的常見用法

1.簡單if語句

即執行如果什麼成立,則怎樣,否則則怎樣。

例如,如果你的考試成績大于等于60分,則及格,否則為不及格。

E3單元格公式=IF(D3<60,"不及格","及格")

excel中if邏輯判斷(沒有如果的話該怎麼辦)1

2.簡單單向嵌套if語句

即外面一個if函數,裡面還有好多層if函數,用于複雜的邏輯判斷與執行。

例如,還是剛才那個例子,對考試成績進行分類。規則是小于60分,為不及格,60-70,為及格,70-80為中,80-90為良,90-100為優。

這個例子中,用單一if語句已經搞不定,我們要用嵌套的if語句進行多層的邏輯判斷。

寫法1:

=IF(D3<60,"不及格",IF(D3<70,"及格",IF(D3<80,"中",IF(D3<90,"良","優"))))

說明先判斷成績是否小于60,為真,則顯示不及格,為否後,則執行下一層if判斷。

下一層if判斷是在上一層的基礎上進行,即D3成績<60不成立(D3>=60),然後判斷是否小于70,成立則顯示為及格。在外層IF的作用下,D3<70實際上指的是60<=D3<70。這個數值區間我們定義為“中“。

後面的計算以此類推,逐漸深入到最後一層。每一層IF都有個前提條件,就是外層IF執行的結果和條件傳遞。

理解這一點非常關鍵。因為這種隐含的條件,可以簡化我們的公式寫法。例如,第二層if我們就不用顯示的将條件寫出來,比如寫成這樣IF(and(D3>=60,D3<70),”及格”,If(…))

寫法2:

這種寫法尤其适合對數據按大小進行分檔劃分。當然我們也可以從大往小了進行判斷。

例如:

G3單元格

=IF(D3>=90,"優",IF(D3>=80,"良",IF(D3>=70,"中",IF(D3>=60,"及格","不及格"))))

如果不管繼承外層If的隐含條件,要将所有條件補齊,不是不可以,但會使得函數寫得相當複雜,缺乏邏輯性。結果如下:

excel中if邏輯判斷(沒有如果的話該怎麼辦)2

3.複雜多向嵌套if語句

當我們的有多個判斷條件要同時成立或者部分成立時,這時候的判斷就會很複雜,這個時候我們就要先要梳理好邏輯關系,然後if結合其它邏輯判斷函數and,or,not進行綜合性判斷。

例如:

我們有份工資表,獎金是按考核等級,并結合學曆來進行發放的。現在要計算獎金,并計算實發工資。獎金規則如下:

  • 學曆本科及以上,考核為A,績效獎金為基本薪酬的20%;
  • 學曆本科及以上,考核為B,績效獎金為基本薪酬的10%;
  • 學曆本科及以上,考核為C,績效獎金為0;
  • 學曆本科及以上,考核為D,績效獎金為基本薪酬的-5%;
  • 學曆本科以下,考核為A,績效獎金為基本薪酬的15%;
  • 學曆本科以下,考核為B,績效獎金為基本薪酬的5%;
  • 學曆本科以下,考核為C,績效獎金為0;
  • 學曆本科以下,考核為D,績效獎金為基本薪酬的-5%;

具體數據表如下圖:

excel中if邏輯判斷(沒有如果的話該怎麼辦)3

應該注意到規則裡面,首先要判斷學曆,然後接着判斷考核等級。至少有8個分支。2中學曆構成*4種考核結果。

參考公式如下:

G3單元格公式=

=IF(AND(C3<>"大專",E3="A"),20%*D3,IF(AND(C3<>"大專",E3="B"),10%*D3,IF(AND(C3<>"大專",E3="C"),0%*D3,IF(AND(C3<>"大專",E3="D"),-5%*D3,IF(E3="A",15%*D3,IF(E3="B",5%*D3,IF(E3="C",0*D3,-5%*D3)))))))

這裡大概嵌套了7層。公式邏輯簡單,但寫法複雜。如果if嵌套超過4層機會顯得很複雜。其實我們應該再觀察一下規則,來簡化一下公式。

可以注意到考核為C或者D,其績效獎金的規則是一樣的,即和學曆無關。

因此我們可以考慮先判斷學曆是否為C,或者D,然後再判斷學曆,這樣公式就被簡化了。

兩種寫法的結果都是一樣的:

excel中if邏輯判斷(沒有如果的話該怎麼辦)4

新IF公式嵌套寫法如下:

F3單元格

=IF(E3="C",0,IF(E3="D",-5%*D3,IF(AND(C3="大專",E3="A"),15%*D3,IF(AND(C3="大專",E3="B"),5%*D3,IF(E3="A",20%*D3,10%*D3)))))

相比較而言,新寫法先把通用分類C和D先判斷掉,因為它們的獎金規則和學曆無關,後面再處理AB類以及學曆的組合判斷。

三、IF的限制與局限

據說IF最多運行嵌套的層數為8層,我自然沒有試過,因為超過8層的公式寫起來就太複雜。除非萬不得以,我是不願意直接寫。即使寫出來,要去判斷是否寫錯了,也是相對費力。

因此,建議通過輔助列或者其它函數來進行簡化。我們要将複雜的事情簡單化,這樣極容易理解也不會出錯。如何優雅地寫出最簡化的EXCEL公式才是我們的本身,過于複雜的東西就越不穩定。

還是上面的例子,現在給出其它數據處理方式:

思路:構建一個規則判斷矩陣,然後利用Vlookup進行處理。

這個規則判斷矩陣就是将文本的規則表格化,每一行代表一條最明細的規則。利用vlookup定位到最明細的規則,從而獲取到獎金比例。

excel中if邏輯判斷(沒有如果的話該怎麼辦)5

合并列中用&将學曆和考核等級連接在一起,然後寫入vlookup公式:

F3單元格

= VLOOKUP(C3&E3,$H$3:$K$18,4,0)*D3

excel中if邏輯判斷(沒有如果的話該怎麼辦)6

具體動圖操作如下:

excel中if邏輯判斷(沒有如果的話該怎麼辦)7

最後,想說的就是再強調一點:不要一味追求複雜,仿佛寫出複雜的公式有多牛。其實不然,複雜的公式就像是一段程序,需要反複調試,測試結果是否正确。如果我們有更為簡潔的方法,過程就更為可控,結果也更為準确。同時,我們的思維壓力也沒那麼大。

我是華哥。每日精進,不負光陰韶華。

贈人玫瑰,手留餘香。歡迎評論,轉發。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关健康资讯推荐

热门健康资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved