Excel-VBA Сравнение данных столбца - PullRequest
0 голосов
/ 02 июля 2011

Я совершенно новичок в Excel VBA, и мне нужно написать код, чтобы выполнить простую задачу. Мне нужно сравнивать значения в двух разных столбцах строка за строкой и видеть, превышает ли разница 50. Если это так, мне нужно выделить всю строку.

Я программирую на других языках, поэтому у меня есть общее представление о том, как это работает, но я понятия не имею, как перемещаться по ячейкам / просматривать содержимое внутри ячеек. Я попробовал это, но это не сработало (это просто выделило бы каждую строку). Я упростил его, чтобы сравнить, равны ли значения или нет, но безрезультатно (все еще выделено все) Кто-нибудь может мне помочь?

Dim strF0_col As Integer, sF0_col As Integer
Dim myRow, counter As Integer
Dim rEnd As Integer

Sub compare_F0()
    rEnd = 100
    strF0_col = 307
    sF0_col = 317
    counter = 0

    For myRow = 2 To rEnd Step 1
        Application.StatusBar = counter & "rows highlighted."
        If (Cells(myRow, strF0_col).Value = Cells(myRow, sF0_col).Value) Then
            Cells(myRow, strF0_col).EntireRow.Interior.ColorIndex = 28
        End If
    Next myRow
End Sub

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 02 июля 2011

Есть ли причина не использовать условное форматирование, как предложил @Doug Glancy?

У меня это работало довольно хорошо.

Если вы хотите сделать это, сделайте следующее ...

  • Выберите весь ряд
  • Открыть меню условного форматирования (будет зависеть от вашей версии Excel. В любом случае ...)
  • Добавить правило =$KU2>$LE2+50
  • Установите желаемый формат (возможно, заполните желтым?)
  • Подтверждение
  • Копировать формат в другие строки

Обратите внимание, что индекс строки (в нашем случае 2) не может иметь символ $.

Надеюсь, это поможет.

0 голосов
/ 02 июля 2011

Вы, вероятно, не хотите выделять пустые строки?

Если это так, используйте

If Cells(myRow, strF0_col).Value <> "" And _
   Cells(myRow, strF0_col).Value = Cells(myRow, sF0_col).Value Then

В качестве отступления, доступ к таким значениям ячеек довольно медленный.Если вы обрабатываете только 100 строк, то это достаточно быстро, но если это число растет, то вы обнаружите, что оно замедляется до мучительной степени.

Гораздо быстрее скопировать значения диапазона в вариантный массив, а затемзацикливаться на этом.Поиск SO для [Excel] "Variant Array" Есть много ответов, которые показывают, как это сделать, и объясняют, почему это помогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...