excel編程系列基礎:典型的判斷語句應用技巧

2020-12-03 騰訊網

編按:哈嘍,大家好!今天是第四篇VBA實戰入門教程,我們將給大家帶來VBA中最常見語句之一,判斷語句。典型的判斷語句有2種,分別是IF判斷語句和SELECT判斷語句。學習更多技巧,請收藏關注部落窩教育excel圖文教程。

【前言】

上一篇的循環語句同學們都學會了嗎?如果沒有學會,那就需要再給自己一些壓力,因為有可能你又一次輸給了其他人。人生就是這樣,短短幾十年,恍惚即過,你可以一直以「沒時間」、「記不住」為藉口哄騙自己,也可以「對自己狠一些」,反正最後的結果無論好與壞,都需要自己面對。

無論你有沒有學會,下面又有一個重要的EXCEL VBA語句即將登場,為什麼來的如此之快,因為它是「循環語句」的CP——「判斷語句」,工作實戰中有了「循環」必見「判斷」!

【正文】

在日常工作中,我們往往需要在眾多的「對象集」中遍歷每一個對象,從而達到處理數據的結果,無論是EXCEL、ACCESS、ERP都是如此,即便像高級語言PYTHON、JAVA也同樣會有循環語句結構,這就是關係型數據的處理特點。但是我們在循環的過程中,因為各種需求的不同,所以不是所有的數據內容都是我們需要的。

那就要對每一行數據條進行甄別,讓計算機代替我們判斷,是需要的則處理,不需要的就PASS。

一、IF判斷語句

其實大家對判斷語句應該並不陌生,因為工作表函數中就有IF判斷函數,如此的經典,VBA又豈能放過。

1.用一個小案例認識IF判斷語句

示例1)需求,判斷身份證號的位數是否正確。

如果看到這樣的一組號碼,不考慮號碼的信息正誤,只看位數,你很難知道它是否是18位,那麼此時用代碼來處理,就顯得很方便了,如下:

Sub 判斷身份證號位數正誤()

With Sheets("IF判斷語句")

For i = 2 To 10

If Len(.Cells(i, 1)) = 18 Then

.Cells(i, 2) = "18位"

End If

Next i

End With

End Sub

【代碼解析】

Line1使用工作表「IF判斷語句」作為代碼中引用對象的統一父級對象;

Line2:規定循環變量i的範圍為2到10,因為我們是遍歷單元格,逐行判斷,所以循環變量應該以單元格的行號作為循環依據,所以是ROW2到ROW10;

Line3:Cells(i, 1)說明是某一行和第一列的交點單元格,當i變量為2,3,4,…,10時,對應的單元格地址就是A2,A3,A4,…,A10。用LEN函數提取單元格字符串的長度,判斷是否等於18;

Line4:如果判斷條件滿足,則Cells(i, 2)對應的B列單元格中輸入「18位」;

Line5:判斷語句的結束語句;

Line6:循環語句的結束語句;

Line7:With語句的結束語句。

2.IF判斷語句的語法

從上面的示例1我們可以看出,當判斷條件滿足時,返回對應的結果,但卻留下了很多空單元格。下面我們就正式的了解一下IF判斷函數的語法,如下:

這就是IF判斷語句的完整語法,和IF函數一樣,當滿足某一級判斷時,返回相應結果,並跳出此次判斷。這其中的ElseIF語句,就相當於IF函數的嵌套使用,Else就相當於IF函數的False_value。

3.通過案例學會IF判斷語句

處於實戰的考慮,我們繼續看兩個案例,幫助大家能夠更好地了解IF判斷語句的用法,如下:

示例2)需求,判斷A列數值的奇偶性。代碼如下:

Sub 奇偶性()

With Sheets("奇偶性")

a = .[A1].End(4).Row

For i = 2 To a

If .Cells(i, 1) Mod 2 = 0 Then

.Cells(i, 2) = "偶"

Else

.Cells(i, 2) = "奇"

End If

Next i

End With

End Sub

【代碼解析】

Line1:使用工作表「奇偶性」作為代碼中引用對象的統一父級對象;

Line2:使用單元格End屬性和Row屬性,找到數據範圍末行的行號,並賦值給變量a;

Line3:規定循環變量i的循環範圍是2到a,循環每一行數據(不含表頭);

Line4:判斷單元格Cells(i,1)第一列每一個單元格,除以2求餘(Mod函數)是否等於0;

Line5:如果等於0,則對應的Cells(i,2)單元格,賦值「偶」;

Line6:Else,不滿足上麵條件的情況時;

Line7:則對應的Cells(i,2)單元格,賦值「奇」;

Line8:判斷語句的結束語句;

Line9:循環語句的結束語句;

Line10:With語句的結束語句。

小知識

Mod函數,在工作表函數中也有它的身影,但是在EXCEL VBA中它的語法有些不同,教同學們一個記住它的方法:在VBA中你可以把它理解為一個「運算符號」,例如4/5、6*8、21-6這樣的算式,求餘就是235 Mod 62,表示235除以62的餘數。

示例3)需求,按照制度,製作每個人的提成。

不要覺得我們一直在講基礎,對於VBA來說,沒有絕對的基礎,漏掉哪一個環節都有可能讓你使用VBA的過程不順暢。我們現在就利用判斷語句,解決一個同學們工作中的實際問題。學習更多技巧,請收藏關注部落窩教育excel圖文教程。

數據源就不用多說了,作者E圖表述在以往的文章中說過很多了,包括區間的寫法。下面直入正題,代碼如下:

Sub 提成計算()

With Sheets("計算提成")

a = .Range("A1").End(4).Row

For i = 2 To a

If .Cells(i, 3)

.Cells(i, 4) = "銷售額*85%*1%"

.Cells(i, 5) = .Cells(i, 3) * 0.85 * 0.01

ElseIf .Cells(i, 3) >= 100 And .Cells(i, 3)

.Cells(i, 4) = "銷售額*85%*2%"

.Cells(i, 5) = .Cells(i, 3) * 0.85 * 0.02

ElseIf .Cells(i, 3) >= 200 And .Cells(i, 3)

.Cells(i, 4) = "銷售額*85%*3%"

.Cells(i, 5) = .Cells(i, 3) * 0.85 * 0.03

Else

.Cells(i, 4) = "銷售額*80%*8%"

.Cells(i, 5) = .Cells(i, 3) * 0.8 * 0.08

End If

Next i

End With

End Sub

這算是IF判斷語句最全的寫法了,基本涵蓋了所有和判斷語句有關的內容。介於篇幅,也考慮到同學們需要有思考的空間,上面這段代碼,就不給出代碼解析的過程,正題思路就是一個IF(IF(IF))的嵌套使用。

小知識

如果有兩個條件都需要滿足,我們可以使用AND,依然和IF工作表函數一樣的用法,但是不一樣的是語法為「條件1 AND 條件2 AND 條件N」;如果是多條件取其一,就用OR,「條件1 OR 條件2 OR 條件N」;如果是更加複雜的情況,如:(條件1 AND 條件2) OR 條件3,意思就是條件1和條件2都滿足,或者只有條件3獨立滿足。這個邏輯過程,可以舉一反三。

二、SELECT判斷語句

因為IF函數已深入人心,所以我們開篇就講解了IF判斷語句,其實在EXCEL VBA中還有另一種判斷語句的寫法,就是SELECT判斷語句,語法如下:

我們看一個案例說明問題,考勤統計:

不考慮曠工和漏打卡的情況,這個案例單純的就為了說明SELECT判斷語句的用法,代碼如下:

Sub 遲到早退()

With Sheets("考勤")

a = .[C1].End(4).Row

i = 2

Do While i

Select Case .Cells(i, 4)

Case Is

.Cells(i, 5) = "上午正常"

Case Is

.Cells(i, 5) = "上午遲到"

Case Is

.Cells(i, 5) = "下午早退"

Case Else

.Cells(i, 5) = "下午正常"

End Select

i = i + 1

Loop

End With

End Sub

【代碼解析】

Line1引用「考勤」工作表為整體父級對象;

Line2確定末行的行號,並賦值給a變量;

Line3確定Do While的循環變量i的初始值為2(從工作表的第2行開始);

Line4給定循環的條件,不能超過最大數據範圍a;

Line5確定Select Case的判斷條件是.Cells(i,4)單元格的時間內容;

Line6逐條判斷Case Is給定的條件,滿足則執行相關語句命令行,並跳轉到End Select;如果不滿足,則執行下一個Case Is條件;

……;

Line15循環變量加1(進行下一次循環);

Line16循環語句的結束語句;

Line17With語句的結束語句。

整體的思路和IF判斷語句是一樣的,作者E圖表述,還是希望大家多看看IF判斷,畢竟寫法上和我們日常理解的IF很像,寫代碼時的思路更好梳理。

【編後語】

判斷語句就先講到這裡了,當然有的同學會說,判斷裡面還有一種IIF的寫法,基本和工作表函數的IF函數一致,但是不適合寫比較複雜的條件過程,所以此處略過,只是上面的內容,就足夠大家日常使用了。學習更多技巧,請收藏關注部落窩教育excel圖文教程。

****部落窩教育-excel判斷語句應用基礎****

原創:E圖表述/部落窩教育(未經同意,請勿轉載)

更多教程:部落窩教育

微信公眾號:exceljiaocheng

相關焦點

  • excel編程系列基礎:常用語句之循環語句的邏輯理解
    今天是第三篇VBA實戰入門教程,我們將給大家帶來VBA中最常見語句之一,循環語句。典型的循環語句有4種,分別是Do While…Loop循環、Do…Loop Until循環、For…Next循環、For Each x In y … Next循環。查看循環邏輯圖可以更快理解循環語句。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
  • excel編程系列基礎:操作對象RANDE的屬性介紹
    在上篇的VBA文章中,我們提到了RANGE屬性,簡單介紹了它在選中單元格區域,以及對單元格區域賦值時的作用,但這僅僅是最基礎的應用,今天我們繼續來講解RANGE屬性。【前言】在上一篇文章中,作者E圖表述給大家分享了關於RANGE對象引用的方法。
  • excel編程系列基礎:VBA常用的操作對象RANDE
    前段時間和大家提到了讓excel自殺的VBA代碼,引起了不少小夥伴的討論,都說想看部落窩分享更多關於excel中VBA的知識,別催別催,這不就來了嗎。學習更多技巧,請收藏部落窩教育excel圖文教程。在EXCEL中也有類似的一個比例,那就是「日常使用的知識:excel不會應用的知識」,但是這個比例大概有多少就不好說了,因為每個人掌握EXCEL的程度是不一樣的,不敢說「九牛一毛」,但是大部分的同學還只是用到「皮毛而已」。當你有一天真正的運用到了VBA,才會對EXCEL的運行原理有更加透徹的理解和使用。
  • 如何學好C語言判斷語句?攻略if語句是第一步
    C語言,是全球使用最多的程式語言。上次我們談到了switch語句,但在C語言中,if條件構成的選擇結構程序很重要。在實際問題中,往往需要對不同變量進行比較,然後分別執行不同的語句。如何使用if語句呢?小編在這裡談一談if語句基本用法與使用技巧。
  • excel編程系列基礎:認識VBA的編輯器VBE
    學習更多技巧,請收藏關注部落窩教育excel圖文教程。【前言】作者E圖表述在「部落窩」也寫了不少VBA的文章了,並且現在依然保持更新,還是那句話:在操作函數、數透、圖表、VBA這幾大EXCEL模塊中,唯獨VBA是一定要按部就班、循序漸進的學習。
  • 三、python編程基礎之分支語句基本語法以及應用實例
    實驗目的:學習python的判斷語句實驗環境:已正確安裝python3.51、判斷語句的語法首先應該注意的是,python語言與其他程式語言不同之處在於:python語言是以縮進作為函數、語句作用域的區分方式。
  • 慢步學python,編程基礎知識,流程控制語句if
    慢步業餘學python編程,今天休息繼續分享python編程知識。面向過程編程,重要的是程序的流程,今天說說流程控制語句if。在我們高中數學中就有流程圖的學習,只是沒有真正應用起來而已,辦公軟體也有流程圖的插入。
  • Python基礎知識儲備,if-elif-else語句綜合應用,新手使用教程 - IT...
    ,if語句中的判斷結果為False假,就會依次判斷 elif 語句中的表達式,如果為True真,程序就會執行 elif 中的代碼塊……(if語句之後可以有任意數量的elif語句)如果前面所有條件都為False假,程序就會執行 else語句下面的代碼塊,else語句最多只可以有一個語句。
  • excel函數應用技巧:那些名不副實的函數列舉
    說到「廢柴」一詞,相信小夥伴們很難把它和excel中各類神通廣大的函數聯繫在一起。但是隨著excel版本的不斷更新,不少函數逐漸被取代、淘汰,我們把這樣的函數稱為「廢柴」函數。學習更多技巧,請收藏部落窩教育excel圖文教程。
  • PWR系列高性能可編程交流電源的波形編輯功能及應用
    PWR系列高性能可編程交流電源的波形編輯功能非常強大與豐富,主要有波形庫調用、線路仿真、步階功能(Step),序列功能(List)、符合IEC標準的電壓輸出、波形導入還原輸出等。同時標配上位機軟體PWR-Controller,便於通過上位機編輯波形、操作控制可編程交流電源。
  • excel基礎學習,3個技巧設置excel行高與列寬
    excel表最基礎的技能就是製作一份表格,表格是由一個個單元格組成,單元格就涉及行高與列寬,下面我們就一起來學習一下有關設置excel行高與列寬的3個小技巧。技巧一、打開excel工具欄開始選項卡點擊格式下來列表,在行高和列寬處調整。技巧二、選中需要調整行和列的單元格,然後單擊滑鼠右鍵,選擇行高和列寬的調整。技巧三、直接使用滑鼠拖動單元格的行高與列寬。
  • ExcelVBA入門系列|1分鐘了解IF語句及其小技巧 - Excel函數編程...
    多條件IF語法:If判斷語句Then條件成立結果ElseIf判斷語句Then條件成立結果ElseIf判斷語句Then條件成立結果.................ELSE條件不成立結果END IF其中【ElseIf 判斷語句 Then 條件成立結果】可以重複條件多次,這樣就可以判斷多次。
  • excel基礎應用匯總:單元格內容處理的小技巧
    學習更多技巧,請收藏關注部落窩教育excel圖文教程。在Excel軟體中,有很多按鈕、菜單和對話框,它們能夠實現各種各樣的功能。它們中的有些功能聞名遐邇,如快速填充Ctrl+E,查找替換等;而另外一些,看似不起眼,但有時卻能派上大用場。今天,小花就給大家帶來五個技巧界的「小人物」。
  • Java基礎篇 | 流程控制語句,和算法應用
    一、分支語句流程控制語句對任何一門程式語言都是非常重要的,Java中基於流程控制程序執行的不同步驟和代碼塊。1、IF條件IF條件語句會根據不同的判斷條件執行不同的語句,if後括號內的條件是否成立關鍵步驟,IF條件的判斷結果必然要是true或false。IF...Else語句則是滿足IF條件,就執行相應代碼塊,否則就執行Elase代碼塊。
  • python基礎知識:判斷語句
    判斷語句介紹<1>生活中的判斷場景上網吧<2>開發中的判斷場景密碼判斷重要日期判斷if 今天是周六或者周日還得等30天小總結:如果某些條件滿足,才能做某件事情,而不滿足時不允許做,這就是所謂的判斷不僅生活中有,在軟體開發中「判斷」功能也經常會用到if判斷語句<1>if判斷語句介紹if語句是用來進行判斷的,其使用格式如下:
  • C/C++編程筆記:while循環語句,要注意先判斷再執行
    在循環入口處判斷循環條件,為真時執行循環體,先判斷再循環。statement(s) 為循環體,可以是單條語句或多條語句的代碼塊。這裡值得注意的是:while 循環可能一次都不會執行,因為是先進行判斷再執行的順序
  • 在編程中,控制語句break和continue的差異,就像兩種典型的女人
    編程中,控制語句break和continue的差異,如同理性的女人與感性的女人,不斷實踐與相處後,方能感知其中微妙的聯繫與差別。程式設計師在編程過程中,經常會用到break語句和continue語句。而控制語句break和continue的差異,就像兩種典型的女人:理性的女人與感性的女人。理性的女人,在感情裡,往往會表現的冷血,狠心;感性的女人,在感情裡,則多表現為矯情,口是心非。不管是哪種女人,本無對錯,選擇合適的相處方式,便可經營精緻的生活。作為程式設計師,更應該明白,break語句和continue語句,也沒有優劣之別,在合適的場景使用,才能實現預期的結果。
  • Python基礎知識儲備,if語句的簡單用法及實例 - IT教頭王進
    條件選擇在Python語法中是最基礎也是最重要的一個語句結構。不僅僅是程序,平時生活中我們也會面臨很多選擇,比如今天下雨,我是開車上班? 還是做公交車?今天中午是吃麵條還是吃鹹魚?所以程序也同樣面臨這樣的問題,這個值大於100 應該執行什麼操作,小於100執行什麼操作?在前面的文章中介紹過Python中的條件表達式,也寫過標準的條件語句。
  • 神奇的Excel VBA系列之:如何判斷某工作表是否存在
    其中有個判斷當前工作簿中是否存在指定名稱的工作表代碼片段。 本篇中將介紹幾種使用VBA代碼來判斷工作表是否存在的方法。有關Excel VBA編程,可參考使用《神奇的VBA》插件。和 Exist Sub語句來返回是否存在的結果。
  • 2280S系列可編程直流電源的產品特點及典型應用
    打開APP 2280S系列可編程直流電源的產品特點及典型應用 海洋興業科技 發表於 2021-01-03 12:04:00 2280S