arrays - Excel VBA 搜索大数组

标签 arrays performance excel vba search

所以我找到并修改了一个适合我需要的宏,但是有一个限制。我正在构建一个宏来搜索医疗支付数据以获取特定的诊断代码和程序代码。在我目前正在进行的项目中,只有14个诊断代码,所以我能够将其直接放入VBA中。然而,有超过 800 个程序代码我无法放入 VBA 中。 我能够执行单独的 VBA 步骤来引入包含此数据的表,但我似乎无法将其设置为针对该表进行搜索。但话虽这么说,对如此大量的项目运行 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

我可能会想出一个答案,但没有提出正确的问题。如果有什么需要澄清的地方,请告诉我,并提前感谢您提供的帮助。

-瑞安

最佳答案

为了搜索数组,我建议您将数据转储到变体数组中,而不是遍历范围。这样就减少了在代码和工作表上来回的流量——特别是格式化。格式化无论如何都很昂贵,就你而言,它似乎花费了你一个月..

以下是具体步骤:(不是代码 - if you need a code take a look at these samples. )。

  1. 将数据转置为变体数组
  2. 在 VBA 代码中根据需要进行搜索
  3. 将数据转储到位置(范围)
  4. 格式(范围)

关于arrays - Excel VBA 搜索大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101933/

相关文章:

javascript - 返回行号匹配错误

java - 具有最低和最高价格的产品(数据从文本文件中读取)

python - Pandas 重采样和插值功能太慢

iOS7 UIImage drawAtPoint 不是视网膜

vba - 从PPT中提取文本并使用VBA将其粘贴到Excel中

Java.lang 错误?

php - 使用 mySql 查询的结果填充数组

ruby - 比较字符串并打印出匹配项 (Ruby)

由于字典变得太大,Python 函数花费的时间太长

vba - Excel VBA - 字典.Exists(字典)?