替換IF函數的3類用法,你知道一切?這有原理,了解一下!

2020-12-16 小哥聊經驗

大家好,我還是那個愛聊Excel的廖晨,前些天,在編寫IF函數的教案時,覺得其中有些可以代替IF函數的用法,還是挺有意思的,就在這裡整理一下,分享給大家。不過在講其它的用法之前,還是得從IF函數的基礎用法說起。

01IF函數基礎用法

說起IF函數語法結構,並不複雜,共3個參數,1條件,2個結果:真結果和假結果,用類公式來表示語法結構如下;

=IF(條件,[真結果],[假結果])

條件:有的書中叫條件表達式,通常由比較運算符=,>,>=,<,<=,<>組成,也可以用邏輯函數:ADN,OR,來處理多條件判斷情況;不過這裡需要注意:條件表達式的=,是表示是否等於的意思,而非賦值;

如果想玩轉條件,還有一條規則需要知道,就是不同類型的數據大小順序:數值<文本<FALSE<TRUE。

真/假結果:[]表示選填項,若無相關的處理,都可以省略,條件成立返回真結果,不成立返回假結果;真/假結果從數據類型可以分為數值,文本,邏輯值,當為文本時,需要用「包裹;

IF函數實質上,就是一道最少為2個選項的單選題。

估計有的人會說:不對啊,我如兩個結果都不寫參數或只寫一個參數,怎麼會是2個選項呢?確實,哪我們就思考一下這兩種情況:

如果兩個結果都不寫的話,哪你寫的公式就沒有存在的意義了,沒有意義事情,討論無意義;如果只寫一個結果的時候,這樣默認對應的另一個結果就是空,如果你把真結果也寫為空,哪還是無意義。說了這麼多,也只能停留在邏輯層面,接下來還是用個例子來更全面的詮釋一下IF函數的用法吧。

02條件格式替換

現有一班成績表,數學成績單,要求你區分出不及格的人?表格結構如下:

成績表數據結構示意圖(圖1)

常見的做法就是及格和不及格來區分,上面的問題可用一句話概括:

數學成績大於等於60為及格,小於60則為不及格可以從中剝離出2個條件:>=60或<60,選擇其中任何一個條件,用在IF函數中,都能解決問題,只是在函數中的真/假結果順序上有所不同,回看例子,數學成績在D列,第1個成績引用位置D2,可在E2使用的IF公式有2:

IF(D2>=60,」及格」,」不及格」)IF(D2<60,」不及格」,」及格」)我選擇了第1個公式,具體操作如下:

1.E1錄入:考試結果,E2錄入公式=IF(D2>=60,"及格","不及格"),回車;

2.滑鼠移至E2右下角,滑鼠變為實心加號,按住滑鼠左鍵,拖拽填充公式至E16或雙擊滑鼠左鍵填充公式;

案例操作步驟示意圖(圖2)

但是,這種做法區分效果並不明顯,而在表現上,鮮豔的顏色和形狀明顯優於文字,說到顏色,在表格中屬於樣式的範疇,而能達到根據不同的條件,呈現不同顏色的就數-條件格式。

若用條件格式,上面剝離的2個條件中<60更適合,我用的填充紅色背景,字體顏色為白色標示:不及格,不過,若將D列都設置上條件格式,還需要滿足非空的條件,要不空白的單元格也會出現設置的格式,會顯得很LOW。

同時滿足兩個條件,我並沒有使用AND函數,而是用了另一種極簡的寫法。至於怎麼寫的,還是先看操作步驟吧!

選中D列,點擊【開始】下的【條件格式】按鈕,選擇【新建規則(N)】,彈出窗口;選擇」使用公式確定要設置格式的單元格」,條件錄入=(D1<60)*(D1<>」」),設置填充顏色為紅色,字體顏色為白色,確定。

條件格式操作步驟示意圖(圖3)

雖然條件格式對比效果明顯,但也不能多用,因為顏色多了之後,容易讓人眼花繚亂。如果你想了解條件格式的更多用法,可翻開之前的文章《小白講Excel:你的『條件格式』什麼功法?高階?這是初階了解一下

可能有人要問了:多條件全部成立為什麼可以用數學表達式來寫呢?那是什麼原理呢?

這類寫法不光可以替代AND和OR函數的多條件判斷,在一些場景中,還可以替代IF函數,為了方便介紹,我給這類方法起了名字:數學運算法,至於原理嗎?且聽我娓娓道來。

03數學運算法:

用數學運算法之所以能這麼用,是因為Excel的特殊設定,邏輯值和數字可以互相轉化,轉化規則如下:

數值轉化為邏輯值:0相當於FALSE,而非0相當於TRUE,當邏輯值轉化成數值:FALSE為0,TRUE為1;以上的規則,再結合數學運算法則就是該類用法的核心原理。

簡單總結為加法可替代OR函數乘法可代替AND函數,當IF函數的真假結果也是數值時,就可以用該法代替了。理論有點空,還是來個例子,近距離了解一下其中奧義吧。

這個例子比較簡單,就是根據錄入的快遞重量,計算出相應的運費?

根據快遞質量計算運費數據示意圖(圖4

要編寫計算公式,首先必須了解快遞續重的規則:

只要超過1KG,不論多少,都是按2KG計算;所以當重量超過1KG,需要對數值進行向上取整,這時需要用到函數ROUNDUP:

語法結構 ROUNDUP(取整數值,保留小數)用法:當保留小數為0時,只保留整數;回看源數據,運費的計算分3種情況:

以送達廣東為例:

<=0.5KG 運費為B2:7.8;>0.5且<=1KG,運費為C2:9.00>1KG,運費為:(C2)9.0+(快遞重量-1)*0.8(D2)理清這些關係,就可以編寫運費的計算公式了,不過別忘記在>=1KG時,需要對快遞的重量向上取整,還有整張表都在使用一個快遞重量引用:G2,所以在寫公式時,需要使用絕對引用,於是將上面的內容匯總成IF公式:

=IF($G$2<=0.5,B2,IF($G$2<=1,C2,C2+(ROUNDUP($G$2,0)-1)*D2))但是如果你仔細觀察數據,你就會發現,當>0.5KG的向上取整,帶入>1KG的公式中,也是C2,所以公式可以簡寫為:

=IF($G$2<=0.5,B2,C2+(ROUNDUP($G$2,0)-1)*D2)那麼問題來了,該如何用數學運算法代替呢?

根據TRUE和FALSE可以轉化為1和0,上面公式的條件可以抽離成($G$2<=0.5)和($G$2>0.5);然後與IF中的結果相乘,再求和即可:

=($G$2<=0.5)*B2+($G$2>0.5)*((ROUNDUP($G$2,0)-1)*D2+C2)具體操作步驟如圖:

數學運算法代替IF函數的操作步驟(圖5

這個數學運算法之所以能得出正確的結果,是因為數學運算法則中的乘法法則:

0任何數都為0;當條件不成立時,轉化的成數值為0,而0*任何數都是0,就會過濾掉後面的結果,當條件成立,則轉化為1,就會保留表達式後面的結果。

可能你要說:這也就能代替一個IF函數,如果遇到嵌套的,這種寫法比IF函數還要難辨邏輯吧?

確實,它只適合代替單一的IF函數,因為每個判斷結果都需要有判斷條件,想比IF函數會多一些代碼,但是它在代替AND和OR函數上,還是有優勢的,而且你用於驗證複雜公式中的IF函數的運行結果也是很不錯的,至於如何代替IF嵌套呢?還得函數替換法。

04函數替換法

第1個例子之所沒有用到IF嵌套是因為分級少,哪我們就按中考的成績劃分法,將一科成績劃分為5個等級:

A:>=90且<=100;B:>=80且<90;C:>=70且<80;D:>=60且<70;E:<60如果用IF函數的嵌套來做,至少需要4層函數嵌套。解法思路有2:一是從大到小,一是從小到大;我選擇從小到大的思路,模擬公式如下:

如果成績<60時,返回E,如果<70時,返回D,如果<80時,返回C,如果<90,返回B,否則返回A;將模擬公式的中的如果換成IF函數,若還是在E列中返回結果,E2對應的成績為D2,轉化成IF公式:

=IF(D2<60,"E",IF(D2<70,"D",IF(D2<80,"C",IF(D2<90,"B","A"))))

IF函數嵌套判斷分級步驟示意圖(圖6)

雖然只有4層嵌套,其中邏輯關係已經相當複雜了,但這還是在條件最簡,結果也是最簡的情況下,只要稍微一增加一點難度,光理清邏輯關係就讓人頭疼了,就更別說調試和修改了。

在日常工作中,可代替IF嵌套分級的函數有5個,而方法卻有4種,因為其中一種是組合,沒有錯,就是INDEX+MATCH組合,剩下的就是:LOOKUP,VLOOKUP或HLOOKUP函數,之所以能代替IF嵌套分級是因為它們有個共性,都支持近似值查詢,就是說:如果無法找到查找值,就返回一個相應規則下,與之相近的值,由於篇幅的原因,這裡只介紹LOOKUP的近似值查找規則。

LOOKUP函數是這種四種用法,唯一一個只有近似值查詢的函數,它有兩種用法,從參數多少上分,分為2參和3參用法;由於LOOKUP函數的詳細用法非本文重點,所以只介紹一下相對簡單的3參用法:

語法結構:LOOKUP(查找值,查找範圍,結果範圍)要玩轉LOOKUP函數,需要了解3點:

查找的規則:在查找範圍中,若沒有找到查找值,就返回一個小於查找值的最大值;若查找值小於查詢區域中的最小值,則返回#N/A;如果你想查找到一個明確的值,查找範圍必須按升序排列;否則返回的結果會是隨機的;當有多個結果時,會返回結果集合中的最後一條;正是LOOKUP的查找規則,限定了它的使用範圍和場景,但卻十分貼合分級的邏輯規則,比如>=90的成績,若表中只有90,而相鄰單元格為A,用LOOKUP查找,不是很容就返回等級A嗎?

不過在用之前,還需要創造2個條件,就是等級劃分必須是升序且唯一,這對於我們來說不是很容易嗎?只需手動創建即可。

具體操作如下:

創建init工作表,A1:B1,錄入:分界線,等級;A2:A6錄入:0,60,70,80,90;B2:B6分別錄入E,D,C,B,A;成績表,E2錄入=LOOKUP(D2*1,init!A$2:A$6,init!B$2:B$6)回車,滑鼠移至E2右下角,滑鼠變為實心十字,雙擊滑鼠左鍵;

LOOKUP函數操作步驟示意圖(圖7)

對比2個方法,若增加分級,LOOKUP函數只需修改init工作表的配置信息即可,而IF嵌套就需要重新編寫公式,這也驗證了編程思想中的:配置大於邏輯的靈活和易維護。

雖然上面的3類方法各有自己的使用場景,只要使用得當,還是能給我們的工作帶來不少便利,也希望你能在閱讀中有所收穫,編寫公式的方法萬萬條,場景適合第一條。

本來想聊透這些內容,發現一篇文章根本不行,如果你想更深的了解其中哪種用法,可以用文中方法順序為編號,留言或私信告訴我,我會儘快安排上線,好了今天的文章就到這了,花葉草木深,工作要獎金,要得獎金法,找我胖廖晨。

相關焦點

  • 逆向查詢中IF函數和數組的用法,你理解嗎?這有原理了解一下!
    最近收到資深粉絲髮來的私信:廖老師,我對於VLOOKUP的逆向查詢中使用IF和數組用法不太理解,您能詳解一下嗎?當然,所以今天就抽時間來扒一下,隱藏在IF函數和數組用法裡的是什麼樣的原理呢?不過在回答問題之前,我還是先來重溫一下IF函數的基本用法。
  • SUMIF函數的用法技巧,真的都會用?初級用法,了解一下!
    求和在Excel中是個聊不完的話題,如果SUM求和是個沒有底線的「求和」,而SUMIF就是有底線的」求和「,有底線歸有底線,但還是繼承了SUM函數的一個特性,就是容錯性,即:非數字單元格,會識別為0進行計算。今天我就來聊聊這個有底線的SUMIF函數的用法。
  • excel替換函數教程:substitute函數和replace函數的用法及案例
    在excel進行文本替換,除了用查找替換功能,也可以用函數來實現。這節課,我們就來講下substitute函數和replace函數的用法及案例。首先,來看一下案例圖表:上半部分表格,需要的是將A列單元格裡的B列單元格內容替換掉,也就是刪除掉,這種情況用的是substitute函數。
  • INDEX+MATCH函數真的能替代VLOOKUP函數嗎?我看未必!
    前文發完之後,有個有意思的網友說:簡單表用VLOOKUP,INDEX+MATCH函數不支持排序!看來這位新道友,對MACTH的用法有些不太熟悉啊,哪就必須安排一下,所以今天我就來聊聊這個INDEX+MATCH函數和VLOOKUP函數上用法有什麼細微區別吧。
  • 替換函數Substitute的5個應用技巧,用了的親都說好!
    在Excel中,如果要替換相應的數據,除了【查找和替換】功能外,還有一個函數可以完成此功能,此函數就是Substitute。功能:將字符串中的部分字符串以新字符串替換。語法結構:=Substitute(舊字符串,被替換字符串,替換字符串,[替換位置])。當省略「替換位置」時,默認從第一個字符串的位置開始替換。一、基本用法。
  • lookup函數很實用,難學麼?你要知道它的查找原理就不難了
    Vlookup在工作中經常用,還有一個類似的函數Lookup,功能其實比vlookup強,但是理解起來要複雜一點,但是如果你掌握了lookup函數的查找原理,你就能熟練的應用這個函數了lookup函數基本介紹這個函數有兩種用法,數組法和向量法,我們只介紹向量法,掌握了向量法,數組法自然能夠理解,它的使用是:lookup(查找值,查找列
  • 1個函數1張圖,共25個常用函數,帶你迅速掌握函數
    sumproduct函數sumproduct函數:返回相應的數組或區域乘積的和參數Array1,array2,array3, …….最多255個ArrayArray:代表數組或者單元格區域需要注意的是:使用sumproduct函數,參數中的元素數必須相等
  • 讓你徹底明白yield語法糖的用法和原理及在C 函數式編程中的作用
    如果大家讀過dapper源碼,你會發現這內部有很多方法都用到了yield關鍵詞,那yield到底是用來幹嘛的,能不能拿掉,拿掉與不拿掉有多大的差別,首先上一段dapper中精簡後的Query方法,先讓大家眼見為實。
  • SUBSTITUTE函數:對於指定字符串的替換,我一直很在行
    假設在文字字串中有幾組相同的特定字串,則它既可只取代其中的一組,也可取代所有,這都取決於您對此函數的最後一個參數 的設定。特殊說明:SUBSTITUTE函數區分字母的大小寫。如開頭示例的第 2 項,由於您指定要被替換的字符是大寫的"A",因此也只有大寫的 「A" 被替換成了 」C",小寫的 「a" 則依然如故。如果您想要它達到不區分大小寫的效果,則您可用小寫轉換函數 PROPER, UPPER或 LOWER將字母統一成開頭字母大寫、全部大寫或小寫,然後再進行替換。
  • Excel表格vlookup函數搭配match函數詳解
    大家好,我是涼涼老師,今天給大家分享一下Excel表格vlookup函數搭配match函數的用法,首先看圖:vlookup用法上面的表格是右邊的數據,根據名稱在左邊數據裡面查詢對應的數據,=iferror(vlookup($f2,$a$1:$d$6,2,0),"")首先我們先來分析一下這個函數
  • Excel Replace函數與ReplaceB函數的使用方法,含7個替換實例
    在 Excel 中,Replace函數與ReplaceB函數用於替換指定的字符數和字節數,它們都有四個參數,其中三個參數相同,只有一個參數不同,也就是指定字符數和字節數的參數不同。以下是 Excel Replace函數與ReplaceB函數的使用方法,總共有7個實例,分別為把單槓替換為雙槓,替換姓名中間一個字,把部分數字替換為星號*,替換某個字後的所有字符,替換一段字符中間指定個字符、替換數字、字母和特殊字符和替換單字節與雙字節,實例操作所用版本均為 Excel 2016。
  • 財務辦公常用Excel公式釋義手冊,及各類函數用法,全部整理齊了
    財務人在日常處理工作的時候,大多都會用到Excel,而99%的財務人都會用到的一個操作就是,指定數據查詢,但是有很多的財務人大多都不會,這樣就大大加重了財務人的工作負擔。今天小編就和大家匯總了一套《Excel 公式釋義及示例大全》手冊,裡面包含了各類函數用法及全部函數操作,共435頁。(文末有福利)好了,現在先給大家展示一下vlookup函數的七個經典查詢操作。大家一起來學習一下吧!
  • 查找總是出錯:別為難vlookup函數了,還是讓lookup函數來吧
    有朋友提到在使用vlookup函數查找的時候結果為什麼是錯的?明明查找規格都是一樣的,並且沒有任何格式差別,怎麼會出錯了呢?看到朋友發來的文件才知道原來是通配符惹的禍?在excel中星號(*)是有特別意義的,如果你需要查找的內容中包含星號,那麼星號的本身是(~*),這樣才能正確查找!非通配符:~加在通配符*或?前,此時*或?
  • excel函數公式應用:多列數據條件求和公式知多少?
    滿足條件的時候為對應數字,不滿足條件時得到FALSE,這是if函數省略第三參數以及第三參數前逗號的用法。 在這個公式中,用if做條件判斷得到需要求和的數字,再用sum實現最終的求和結果。 公式3:=SUM((B$2:B$16=G2)*C$2:E$16)
  • Word中使用RAND函數有什麼作用?如何自動生成隨機文本?
    我們都知道在Excel中會經常用到RAND函數,它可以生成隨機數,用法可見下文。Excel生成隨機數函數RAND和RANDBETWEEN那麼在Word中也能用RAND函數嗎?當你需要一份Word文檔練手時,就能用到它。一、基本語法基本語法為=rand(段落數,每段句數),注意要在英文狀態下輸入。意思是按照指定的段落數和每段句數生成隨機文本。
  • Excel字符函數(5):REPLACE、SUBSTITUTE查找替換函數之區別
    如果需要在某一文本字符串中替換指定的文本,使用函數 SUBSTITUTE;如果需要在某一文本字符串中替換特定位置處的任意文本,使用函數 REPLACE下圖中,REPLACE函數,從A2單元格的第4位取1位,替換為「」空字符(等同於刪除小圓點.)
  • 連續結晶器原理,了解一下
    連續結晶器是在蒸髮結晶和化學工業品生產過程中常見的設備之一,連續結晶器應用頗多,康景輝小編給大家簡單介紹一下關於連續結晶器原理等方面的知識。結晶器原理了解連續結晶器原理之前,先來了解一下什麼是結晶,結晶有哪些方式。
  • 函數周期表丨篩選丨表丨SUBSTITUTEWITHINDEX
    SUBSTITUTEWITHINDEX函數SUBSTITUTEWITHINDEX函數是一個非常高階的函數。隸屬「篩選」類函數,屬於「表函數」,高階使用方法相對而言燒腦一些。返回結果返回一張表,其中共有列會被替換成索引列。例子模擬數據:這是白茶隨機模擬的數據。
  • Python進階之遞歸函數的用法及其示例
    作者 | 程式設計師adny責編 | 徐威龍封圖| CSDN│下載於視覺中國出品 | AI科技大本營(ID:rgznai100)本篇文章主要介紹了Python進階之遞歸函數的用法及其示例,現在分享給大家,也給大家做個參考
  • 數據分析入門,EXCEL的這幾個函數你必須知道
    Excel常用函數分類:關聯匹配類、清洗處理類、計算統計類邏輯運算類、、時間序列類一、關聯匹配類:VLOOKUP:按列查找HLOOKUP:按行查找INDEX:返回表格或區域中的值Trim:清除字符串前後空格:Concatenate:合併單元格Left/Right/Mid:截取字符串Replace/Substitute:替換單元格中內容Find/Search:查找文本在單元格中的位置