Итак, я нашел и изменил макрос, который соответствует моим потребностям, однако есть одно ограничение. Я создаю макрос для поиска медицинских платежных данных для конкретных кодов диагностики и кодов процедур. В проекте, в котором я сейчас работаю, есть только 14 кодов диагностики, поэтому я смог установить это прямо в VBA. Тем не менее, существует более 800 кодов процедур, которые я не могу вписаться в VBA. Я смог сделать отдельный шаг VBA, чтобы привести таблицу с этими данными, но я не могу настроить ее для поиска по таблице. Но, как говорится, что лучший способ запустить этот поиск VBA для такого большого количества предметов?Excel VBA Search w/Large Array
Sub PROCEDURE_1_search()
Dim FirstAddress As String
Dim MySearch As Variant
Dim myColor As Variant
Dim Rng As range
Dim I As Long
MySearch = Array("412", "4100", "4101", "4102", "4103",...) <-- have over 800
With Sheets("All Claims by Date of Service").range("G5:G55000")
For I = LBound(MySearch) To UBound(MySearch)
Set Rng = .Find(What:=MySearch(I), _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
FirstAddress = Rng.Address
Do
With ActiveSheet.range("B" & Rng.Row & ":O" & Rng.Row)
.Font.ColorIndex = 1
.Interior.ColorIndex = 4
End With
Set Rng = .FindNext(Rng)
Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress
End If
Next I
End With
End Sub
Возможно, я придумал ответ и не задал правильных вопросов. Пожалуйста, дайте мне знать, если я могу прояснить и заранее поблагодарить вас за любую помощь.
-Ryan
Итак, в чем проблема, с которой вы сталкиваетесь? Работает ли ваш код, но он медленнее, чем вы хотите, или какие конкретные ошибки вы получаете? –
Ваша проблема не в размере массива, 800 в порядке, это огромное количество строк (55000), что вы выполняете один поиск против 800 раз. – Sam
На самом деле это больше похоже на общую сумму результатов, а не на площадь. Вы форматируете каждое соответствие для 800 кодов в каждом отдельном матче - так что, скажем, 10 находок на код, вы произвольно форматируете 8000 строк. И некоторые строки, вероятно, будут перекрываться. Я бы использовал либо a) 'Union', либо сделать один формат в конце b) Использовать автофильтр на вашем диапазоне – brettdj