excel如何用vba實(shí)現(xiàn)查詢
表1:如下表2中,,A1單元格為男,,要在表1中查詢 到性別與表2中A1相同的所有數(shù)據(jù),并顯示在表2,,不能覆蓋表2中的A1單元格,。要實(shí)現(xiàn)結(jié)果如下圖
如圖,假設(shè)你的表1名稱是Sheet1,,表2名稱是Sheet2,。
按下Alt+F11調(diào)出VBA代碼頁,在Sheet2的代碼頁中輸入下列代碼即可,。
這代碼的作用是監(jiān)視Sheet2中A1單元格的更改,,當(dāng)此單元格發(fā)生更改時(shí),會(huì)自動(dòng)刷新查詢數(shù)據(jù),,可改為"男"或"女"或是為空等,。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer, J As Integer
Dim S As String
If Target.Address = "$A$1" Then
'清空原數(shù)據(jù)
I = 0
Do
I = I + 1
If Len(Sheet2.Range("A" & I + 2)) = 0 Then Exit Do
Loop
Sheet2.Range("A3:E" & I + 2).ClearContents
'刷新查詢數(shù)據(jù)
S = Target
If S <> "" Then
I = 1
J = 2
Do
I = I + 1
If Len(Sheet1.Range("A" & I)) = 0 Then Exit Do
If Sheet1.Range("A" & I) = S Then
J = J + 1
Sheet2.Range("A" & J) = Sheet1.Range("A" & I)
Sheet2.Range("B" & J) = Sheet1.Range("B" & I)
Sheet2.Range("C" & J) = Sheet1.Range("C" & I)
Sheet2.Range("D" & J) = Sheet1.Range("D" & I)
Sheet2.Range("E" & J) = Sheet1.Range("E" & I)
End If
Loop
End If
End If
End Sub