VBA Excel 2007将macros更改为使用范围进行search,而不是将数据放入macros中

我发现了一个适合我需求的macros,但效率并不高。 我有一个6000行的地址列表,我需要使用来自另一个电子表格的数据进行身份识别。 我一直在将需要search的数据复制到macros的ADDRESSES2SEARCH部分,并更改用于标识它们的OWNERNAME。 我希望能够使用另一个电子表格中的命名范围或列作为ADDRESSES2SEARCH。 不幸的是,我不太了解VBA来改变这个macros。 任何人都可以帮助或指向正确的方向吗?

Sub Mark_cells_in_column() Dim FirstAddress As String Dim MyArr As Variant Dim Rng As Range Dim I As Long With Application .ScreenUpdating = False .EnableEvents = False End With MyArr = Array( ADDRESSES2SEARCH ) With Sheets("Adhoc Boundary Scan").Range("A:A") .Offset(0, 1).ClearContents For I = LBound(MyArr) To UBound(MyArr) Set Rng = .Find(What:=MyArr(I), _ After:=.Cells(.Cells.Count), _ LookIn:=xlFormulas, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not Rng Is Nothing Then FirstAddress = Rng.Address Do Rng.Offset(0, 1).Value = OWNERNAME Set Rng = .FindNext(Rng) Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress End If Next I End With With Application .ScreenUpdating = True .EnableEvents = True End With End Sub 

我最终使用Autofilter

 Sub FilterByCompany() Dim vOwnerIPs As Variant Dim wsScan As Worksheet Dim wsVLANs As Worksheet Dim rngOwnerIPs As Range Dim rngScanIPs As Range Set wsScan = Worksheets("Scan") Set wsVLANs = Workbooks("VLANs.xlsx").Worksheets("Sheet1") Set rngScanIPs = wsScan.Range("$A$1").CurrentRegion 'search CompanyA Set rngOwnerIPs = wsVLANS.Range("CompanyArange") vOwnerIPs = rngOwnerIPs.Value rngScanIPs.AutoFilter _ Field:=1, _ Criteria1:=Application.Transpose(vOwnerIPs), _ Operator:=xlFilterValues Intersect(rngScanIPs.EntireRow, wsScan.Range("B:B")).Value = "CompanyA" 'search CompanyB Set rngOwnerIPs = wsVLANs.Range("CompanyBrange") vOwnerIPs = rngOwnerIPs.Value rngScanIPs.AutoFilter _ Field:=1, _ Criteria1:=Application.Transpose(vOwnerIPs), _ Operator:=xlFilterValues Intersect(rngScanIPs.EntireRow, wsScan.Range("B:B")).Value = "CompanyB" End Sub