所以我找到并修改了一个适合我需求的宏,但是有一个限制。我正在构建一个宏查找特定诊断代码和程序代码的医疗支付数据。在我目前正在研究的项目中,只有14个诊断代码,因此我可以直接将其放入VBA中。但是,有超过800个程序代码是我无法装入VBA的。 我能够做一个单独的VBA步骤来引入一个包含这些数据的表格,但是我似乎无法将它设置为在桌子上搜索。但是,话虽如此,运行这种VBA搜索如此多的项目的最佳方式是什么?Excel VBA搜索瓦特/大阵列
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
所以现在你们遇到了什么问题?你的代码是否工作,但比你想要的要慢,或者你得到了哪些特定的错误? – 2013-02-27 00:28:43
你的问题不是数组的大小,800是好的,它是大量的行(55000),你正在执行一次搜索800次。 – Sam 2013-02-27 03:21:02
事实上,它更像是成为问题的结果总量而不是面积。您正在为每个匹配的800个代码格式化每个匹配的代码 - 因此对于每个代码发现10个代码,您将单独格式化8000行。有些行可能会重叠。我会使用a)'Union'并在最后做一种格式b)在你的范围内使用自动过滤器 – brettdj 2013-02-27 03:46:34