У меня есть еще один вопрос, хотя последний, который я задал, все еще не решен. У меня есть большие данные более 100 000 записей. Я использую приведенный ниже код для циклического прохождения данных, так что для любой дублирующейся записи цвет фона станет красным. Код работает нормально, но в настоящее время он занимает слишком много времени для обработки (15-20 минут). мой вопрос, могу ли я что-нибудь сделать, чтобы ускорить процесс?

Код:

Dim wks As Worksheet, wrkb As Worksheet
Dim rng As Range, rngNew As Range
Dim intCount As Integer, intCount1 As Integer
Dim i As Integer, im As Integer

'Sheet1
Set wks = Worksheets("sheet1")
wks.Range("B2").Activate

'sheet2
Set wksb = Worksheets("sheet2")

' Return current data region.

Set rng = wks.Range("B1").CurrentRegion
Set rngNew = wksb.Range("B1").CurrentRegion

intCount = rng.Rows.Count
intCount1 = rngNew.Rows.Count

For i = 2 To intCount
            im = 2
    For im = 2 To intCount1

        If (rng.Cells(im, 2).Value = rngNew.Cells(i, 2).Value) Then

            rng.Cells(i, 2).Interior.ColorIndex = 3

    Exit For
        End If

    Next im
Next 

спасибо за помощь

2 ответа2

1

Вместо использования VBA для циклического прохождения данных, вы можете использовать условное форматирование, которое закрасит ячейки в мгновение ока.

VBA - не лучшее решение, просто потому что это код. Некоторые встроенные функции Excel намного эффективнее и работают быстрее, чем любой код VBA.

Опишите макет листа (ов) и логику, которую вы хотите применить к ячейкам цветового кода.

Затем можно предложить условное форматирование. У меня нет времени, чтобы перепроектировать ваш VBA в серию книг.

0

Это должен сделать вспомогательный столбец на одном из ваших листов, используя формулу COUNTIF для подсчета количества записей, соответствующих условию на другом листе. Затем добавьте условный формат, закрасив ячейки красным, если формула вернет> 0.

И то, что @teylyn говорит о VBA, совершенно правильно - этого следует избегать, если вы можете сделать это с помощью функции.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .