在excel vba中如何从`find`方法中获得多个单元格地址

这个小macros返回邮政编码匹配的第一个单元格地址。 我需要所有邮编匹配的单元格。 我以某种方式循环,或查找方法提供多个答案?

Sub practiceFind() Dim wsVendor As Worksheet: Set wsVendor = Worksheets("vendorOutput.csv") Dim zipColumnVendor As Integer: zipColumnVendor = 5 Dim vendorRows As Integer: vendorRows = wsVendor.Cells(Rows.Count, 1).End(xlUp).Row ' less 1 for label row Dim searchRange As Range Set searchRange = Worksheets("vendorOutput.csv").Range(Cells(2, zipColumnVendor), Cells(vendorRows, zipColumnVendor)) Dim x As Range Set x = searchRange.Find(what:="10514", LookIn:=xlValues, LookAt:=xlPart) MsgBox x.Address End Sub 

你可以用x调用searchRangesearchRange下一场比赛。

例:

 Sub practiceFind() Dim wsVendor As Worksheet: Set wsVendor = Worksheets("vendorOutput.csv") Dim zipColumnVendor As Integer: zipColumnVendor = 5 Dim vendorRows As Integer: vendorRows = wsVendor.Cells(Rows.Count, 1).End(xlUp).Row ' less 1 for label row Dim x As Range With Worksheets("vendorOutput.csv").Range(Cells(2, zipColumnVendor), Cells(vendorRows, zipColumnVendor)) Set x = .Find(what:="10514", LookIn:=xlValues, LookAt:=xlPart) If Not x Is Nothing Then firstAddress = x.Address Do MsgBox x.Address Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> firstAddress End If End With End Sub 

而不是find,你可以做一个filter:

 Set searchRange = Worksheets("vendorOutput.csv").Range(Cells(1, zipColumnVendor), Cells(vendorRows, zipColumnVendor)) With searchRange .AutoFilter 1, 10514 On Error Resume Next Set x = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) On Error GoTo 0 .AutoFilter End With If Not x is Nothing Then MsgBox x.Address