Массив или оператор If с циклом для большого файла. Код работает при тестировании в небольшом файле - PullRequest
0 голосов
/ 18 марта 2019

Цель: заставить мой код просмотреть столбец 4 и найти «пример 1» или «пример 2» или «пример 3», а затем вернуть одно значение в другую ячейку в столбце 29. Например, D3 - это «Пример 3 ", тогда AC3 -" Значение ", D1839 -" Пример 1 ", тогда AC1839 -" Значение "

Вот мой код

    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row

        For x = 1 To FinalRow

        If Cells(x, 4) = "Example 1" Or Cells(x, 4) = "Example 2" Or Cells(x, 4) = "Example 3" _ 
 Or Cells(x, 4) = "Example 4" Or Cells(x, 4) = "Example 5" _
 Or Cells(x, 4) = "Example 6" Then Cells(x, 29) = "AP"
        Next x

Как ни странно, он работает, когда я его пробуюна небольшом образце, то есть на новом листе, содержащем только столбцы 4 и 29.

Я прошу помощи в поиске метода работы кода.Для 65 000 строк с 180 примерами.

Спасибо за любую помощь.Я надеюсь, что мой вопрос ясен.

1 Ответ

1 голос
/ 18 марта 2019

Перебрать массив и создать объединение ячеек в столбце AC.

Dim arr As Variant, i As Long, rng As Range

arr = Range(Cells(1, "D"), Cells(Rows.Count, "D").End(xlUp)).Value

For i = LBound(arr, 1) To UBound(arr, 1)

    Select Case arr(i, 1)
        Case "Example 1", "Example 2", "Example 3", "Example 4", "Example 5", "Example 6"
            If rng Is Nothing Then
                Set rng = Cells(i, "AC")
            Else
                Set rng = Union(rng, Cells(i, "AC"))
            End If
        Case Else
            'do nothing
    End Select

Next i

If Not rng Is Nothing Then
    rng = "AP"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...