Я ищу, чтобы увеличить скорость этой вложенной петли Excel VBA. Петля сравнивает даты с одного листа на вторичном листе. Если они совпадают, я меняю границу вокруг ячейки, чтобы выделить ее. В настоящее время он работает нормально, но занимает около 30 секунд для обработки за суб. Есть ли способ реализовать массив или другую тактику, чтобы ускорить его? Заранее спасибо!Excel VBA Эффективность вложенной петли
Sub Single()
Dim DateRng As Range, DateCell As Range, DateRngPay As Range
Dim cellA As Range
Dim cellB As Range
Dim myColor As Variant
Set DateRng = ActiveWorkbook.Worksheets("SS").Range("B11:F16,I11:M16,P11:t16,B19:F24,I19:M24,P19:t24,B27:F32,I27:M32,P27:t32,B35:F40,I35:M40,P35:t40")
Set DateRngPay = ActiveWorkbook.Worksheets("PS").Range("C2:C67")
myColor = Array("38")
If ActiveWorkbook.Worksheets("Info").Range("B67") = 1 Then
With DateRng
.Interior.ColorIndex = xlColorIndexNone
'.Borders.LineStyle = xlContinuous
.Borders.ColorIndex = 1
.Borders.Weight = xlHairline
For Each cellA In DateRng
For Each cellB In DateRngPay
If cellB.Value > "" And cellA.Value > "" And cellB.Value = cellA.Value Then
With cellA.Borders
.ColorIndex = myColor
.Weight = xlMedium
End With
Exit For
End If
Next cellB
Next cellA
End With
End If
End Sub
Если это работает, и вы хотите сделать это быстрее, он должен быть на http://codereview.stackexchange.com/, поскольку он не по теме для этого форума. –
Сообщите мне, если хотите, поскольку я не проверяю codereview так часто. Массивы наверняка. – Kyle
Использование словаря для хранения данных с одного листа для сравнения с данными из другого является стандартным трюком VBA для преобразования квадратичных алгоритмов в линейные. Я предполагаю, что вы должны иметь возможность сократить 30 секунд до доли секунды. –