--人生不是賽場,夢想不容退場,學習編程成就更好的自己--
微軟公司Office軟件在商業(yè)辦公領(lǐng)域一直占據(jù)著主流和主導地位,其中Excel在數(shù)據(jù)處理和分析領(lǐng)域有著強大的影響力,大部分人在經(jīng)歷幾年職場歷練后可以熟練的使用Excel函數(shù)和透視表功能,基本可以輕松完成絕大多數(shù)工作和任務(wù)。但實際上Office的強大和獨特之處還在于VBA,因為VBA能夠勝任好多個性化二次開發(fā),減少重復(fù)機械勞動從而實現(xiàn)辦公自動化,開發(fā)效率高且開發(fā)周期短,尤其對于Excel重度使用者來說會了VBA簡直就是如虎添翼?。。?!
今天主要介紹兩個VBA基礎(chǔ)知識點:主要循環(huán)類型總結(jié)和VBA使用VLookup函數(shù)。循環(huán)遍歷是編程思維的核心,VBA世界里有幾種循環(huán)遍歷類型,主要包括了For Next, Do While/Until和For Each Next,每個方式都有自己的語法特點和使用規(guī)則,大家根據(jù)實際情況進行合理選擇;在Excel世界里VLookup函數(shù)占據(jù)著非常重要的地位,能夠解決多表不同字段關(guān)聯(lián)匹配的問題,幾乎是Excel高手必須掌握的技能,如何在VBA里調(diào)用VLookup函數(shù)會在后半部分提及,下面開始正文。
首先看下面兩個Sheet表數(shù)據(jù)情況:
DATA表如下:
INFO表如下:
循環(huán)總結(jié)部分:
根據(jù)INFO表中年齡界定范圍來逐一判斷DATA中每個人的人生階段情況:
第一種循環(huán)總結(jié)-For Next
第二種循環(huán)總結(jié)-Do While Loop
第三種循環(huán)總結(jié)-Do Until Loop
第四種循環(huán)總結(jié)-For Each Next
在VBA中調(diào)用VLookup:
根據(jù)INFO表中ID愛好情況來逐一匹配DATA中每個人的愛好情況:
關(guān)鍵點一定使用Application.VLookup才可以調(diào)用成功,參數(shù)設(shè)置都是跟函數(shù)VLookup一樣,是不是一點也不難哦?
代碼匯總?cè)缦拢?/span>
Sub Judge_Age_Period_Next() '利用For Next循環(huán)進行判斷Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long, lr As Long '定義兩個長整數(shù)型數(shù)值lr = ActiveSheet.UsedRange.Rows.Count '獲取當前工作表的最大行數(shù)For i = 2 To lr Step 1 '以步長為1的方式向下遍歷循環(huán)判斷 If Range('D' & i) <= 3 Then Range('E' & i) = '嬰兒' ElseIf Range('D' & i) <= 18 Then Range('E' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('E' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('E' & i) = '中年' Else: Range('E' & i) = '老年' End IfNext iApplication.ScreenUpdating = TrueEnd SubSub Judge_Age_Period_While() '利用While Loop循環(huán)進行判斷Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long '定義一個長整數(shù)型數(shù)值i = 2 '定義起始點數(shù)值Do While Range('D' & i) <> '' '定義何種情況執(zhí)行循環(huán) If Range('D' & i) <= 3 Then Range('F' & i) = '嬰兒' ElseIf Range('D' & i) <= 18 Then Range('F' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('F' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('F' & i) = '中年' Else: Range('F' & i) = '老年' End Ifi = i + 1 '定義步長向下循環(huán)遍歷LoopApplication.ScreenUpdating = TrueEnd SubSub Judge_Age_Period_Until() '利用Until Loop循環(huán)進行判斷Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long '定義一個長整數(shù)型數(shù)值i = 2 '定義起始點數(shù)值Do Until Range('D' & i) = '' '定義何種情況執(zhí)行循環(huán) If Range('D' & i) <= 3 Then Range('G' & i) = '嬰兒' ElseIf Range('D' & i) <= 18 Then Range('G' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('G' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('G' & i) = '中年' Else: Range('G' & i) = '老年' End Ifi = i + 1 '定義步長向下循環(huán)遍歷LoopApplication.ScreenUpdating = TrueEnd SubSub Judge_Age_Period_Each() '利用Each Next循環(huán)進行判斷Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long, rng As Range '定義一個長整數(shù)型數(shù)值和Range對象i = 2 '定義起始點數(shù)值For Each rng In Range('H2:H12') '定義循環(huán)范圍 If Range('D' & i) <= 3 Then Range('H' & i) = '嬰兒' ElseIf Range('D' & i) <= 18 Then Range('H' & i) = '少年' ElseIf Range('D' & i) <= 35 Then Range('H' & i) = '青年' ElseIf Range('D' & i) <= 50 Then Range('H' & i) = '中年' Else: Range('H' & i) = '老年' End Ifi = i + 1 '定義步長向下循環(huán)遍歷NextApplication.ScreenUpdating = TrueEnd SubSub Find_Match_VLP() '利用Vlookup匹配數(shù)據(jù)Application.ScreenUpdating = FalseSheets('DATA').SelectDim i As Long, lr As Long '定義兩個長整數(shù)型數(shù)值lr = ActiveSheet.UsedRange.Rows.Count '獲取當前工作表的最大行數(shù)For i = 2 To lr Step 1 '以步長為1的方式向下遍歷循環(huán)判斷 '通過Vlookup進行匹配數(shù)據(jù) Range('I' & i) = Application.VLookup(Range('A' & i), Worksheets('INFO').Range('D:E'), 2, 0)Next iApplication.ScreenUpdating = TrueEnd Sub
VBA其實并不難,只要肯下點功夫就可以熟練掌握和運用,大家趕緊試一試吧?。。?/span>
END
我為人人,人人為我??!歡迎大家關(guān)注,點贊和轉(zhuǎn)發(fā)!??!
~~人生不是賽場,夢想不容退場~~不斷努力學習蛻變出一個更好的自己,不斷分享學習路上的收獲和感悟幫助他人成就自己?。?!
聯(lián)系客服