文科生也能學會的Excel VBA 宏編程入門(四)——VBA實現vLookup

任務介紹

這一次我們通過VBA編程來實現類似vLookup的功能。當然,你可能要問,既然vLookup能搞定爲什麼還要用VBA再實現一遍。如果僅僅是使用vLookup這一單一功能當然沒必要非得來個VBA編程,但如果你要實現的功能比較複雜就不再適合串聯使用一大堆Excel公式了,這個時候用VBA編程會更容易,也不容易出錯。

程序基本思路

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200330173716128.pn
我們要處理的Excel文件如上圖所示。A列和B列分別是姓名和分數,我們要實現的功能是根據D列的姓名,查找出對應的分數並填寫在E列。

VBA編程

Sub 查找()

Dim l As Long '記錄A列一共有多少行,也即是待查找列表有多少行
Dim l2 As Long '記錄D列一共有多少行,也即是待查詢的內容有多少行

Dim v1 As String '記錄當前的查詢內容

l = ActiveSheet.Range("A65536").End(xlUp).row
l2 = ActiveSheet.Range("D65536").End(xlUp).row

For i = 1 To l2
 v1 = ActiveSheet.Range("D" & i)
 
 For j = 1 To l
    If v1 = ActiveSheet.Range("A" & j) Then
        ActiveSheet.Range("E" & i) = ActiveSheet.Range("B" & j)
        Exit For '既然已經找到了,就提前跳出for循環
    End If
 Next
    
Next

End Sub
  • 下面對一些新內容進行特別說明。這個程序中唯一的新內容就是Exit For這個語句,該語句是用來提前跳出For循環。之所以用這個語句是因爲既然已經找到該同學的分數了,那就應該跳出,避免無意義的循環,浪費運算資源。
  • 程序的主體是兩個For循環,外層循環是遍歷Excel文檔的D列,也就是遍歷待查詢的姓名。內層循環是遍歷Excel文檔的A列,也就是查詢列表。最終實現的效果就是:例如將D1的“小紅”與A列中每個姓名依次比較,如果遇到等於“小紅”的姓名就將對應的B列的分數填寫到E列。

運行結果

在這裏插入圖片描述
程序運行結果如上圖所示,可以看出,該程序實現了類似vLookup的功能,之所以說類似是因爲vLookup遇到A列有重名的時候會返回最後一個匹配的值,而該程序會返回第一個匹配的值,具體爲什麼會這樣可以自己思考一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章