表格內(nèi)容:
A列 | B列 | C列 | D列 | E列 | F列 |
---|
姓名 | 出生日期 | 年齡 | | 姓名 | 年齡 | 楊春海 | 1987-6-22 | 33 | | 許文武 | | 趙春雨 | 1980-9-17 | 39 | | 劉永江 | | 李美橋 | 1998-4-12 | 22 | | | | 劉永江 | 1992-3-17 | 28 | | | | 許文武 | 1987-4-13 | 33 | | | | 劉景瑞 | 1994-7-27 | 26 | | | |
如果用VLOOKUP函數(shù)解決:
=IFERROR(VLOOKUP(A11,A$1:C$7,3,0),"")
如果使用VBA代碼解決:
Sub DctFind()
Dim d As Object, arr, brr, i&
Set d = CreateObject("scripting.dictionary")
d.CompareMode = vbTextCompare
'-----------------------------------------------------------------------------------------------------------------------------------
'裝入: 數(shù)據(jù)源裝入數(shù)組arr, 查詢區(qū)域數(shù)據(jù)裝入數(shù)組brr,遍歷數(shù)組arr,UBound(arr)表示數(shù)組arr的最大行號(hào)。將學(xué)號(hào)作為key,姓名作為item裝入字典
arr = [a1:c7]
brr = [e1:f5]
For i = 1 To UBound(arr)
d(arr(i, 1)) = arr(i, 3)
Next
'-----------------------------------------------------------------------------------------------------------------------------------
'遍歷:標(biāo)題行不用查詢,從第二行開(kāi)始遍歷查詢數(shù)值brr,如果字典中存在考號(hào),根據(jù)考號(hào)從字典中取值。如果字典中不存在相關(guān)考號(hào),則值返回為空
For i = 2 To UBound(brr)
If d.exists(brr(i, 1)) Then
brr(i, 2) = d(brr(i, 1))
Else
brr(i, 2) = ""
End If
Next
'-----------------------------------------------------------------------------------------------------------------------------------
'寫入:設(shè)置文本格式,避免某些文本數(shù)值變形,結(jié)果數(shù)組寫入單元格區(qū)域,釋放字典
With [e1:f5]
.NumberFormat = "@"
.Value = brr
End With
MsgBox "查詢完成。"
Set d = Nothing
' '-----------------------------------------------------------------------------------------------------------------------------------
End Sub
小貼士:
1>該段代碼區(qū)分字母大小寫,即A和a作為查詢值時(shí),并不相等。如果需要不區(qū)分字母大小寫,解除代碼中下面語(yǔ)句的注釋塊。
d.CompareMode vbTextCompare
|