У меня есть 234 000 строк данных и макрос, который применяет к нему форматирование. Макрос занимает около минуты. Я пытаюсь сократить время, если это возможно.Ускоренный способ добавления форматирования
Каждый раз, когда в столбце 1 происходит изменение, добавляется граница, и все данные после второго столбца имеют границу между каждой строкой и становятся цветными.
Ниже приведен пример данных:
Это макро:
Sub FormatData()
Dim PrevScrnUpdate As Boolean
Dim TotalRows As Long
Dim TotalCols As Integer
Dim PrevCell As Range
Dim NextCell As Range
Dim CurrCell As Range
Dim i As Long
Dim StartTime As Double
StartTime = Timer
PrevScrnUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
TotalRows = Rows(ActiveSheet.Rows.Count).End(xlUp).row
TotalCols = Columns(ActiveSheet.Columns.Count).End(xlToLeft).Column
Range(Cells(1, 1), Cells(1, TotalCols)).Font.Bold = True
For i = 2 To TotalRows
Set NextCell = Cells(i + 1, 1)
Set CurrCell = Cells(i, 1)
Set PrevCell = Cells(i - 1, 1)
If CurrCell.Value <> NextCell.Value Then
Range(CurrCell, Cells(i, 2)).Borders(xlEdgeBottom).LineStyle = xlSolid
End If
If CurrCell.Value <> PrevCell.Value Then
Range(CurrCell, Cells(i, 2)).Borders(xlEdgeTop).LineStyle = xlSolid
End If
Range(Cells(i, 3), Cells(i, TotalCols)).BorderAround xlSolid
Range(Cells(i, 3), Cells(i, TotalCols)).Interior.Color = RGB(200, 65, 65)
Next
Application.ScreenUpdating = PrevScrnUpdate
Debug.Print Timer - StartTime
End Sub
Редактировать: Ниже приведен пример результата:
Редактировать 2: Я пробовал это с массивами, и это не улучшает скорость.
Этот Excel 2007 или выше? Почему вы не используете условное форматирование? – rene
Excel 2010, я не думал, что условное форматирование может добавлять границы каждый раз при изменении значения в столбце. – Ripster
@Ripster [Он может] (http://stackoverflow.com/q/5194286/11683). – GSerg