Excel VBA - сравнивать значения ячеек, когда другие значения в строке соответствуют критериям - PullRequest
0 голосов
/ 10 октября 2018

В столбцах от A до E. есть данные. Я хочу сравнить значения в столбце E, если столбцы A, B, C и D совпадают, и добавить значение X в строку в столбце.F если эти условия соблюдены.Я хочу отметить только те, которые имеют несоответствие в столбце E, но когда я отмечаю одну строку, все строки с одинаковыми значениями A, B, C и D должны быть отмечены.

Например, если A, B, C и D равны для первых трех строк, я хочу сравнить эти записи.Поскольку в E3 имеется несоответствие по сравнению с E1 или E2, я хочу, чтобы от F1 до F3 отображались как X. Поскольку A, B, C и D равны в строках 4 и 5, но E4 и E5 совпадают, я хочу, чтобыигнорируйте эти ячейки.

Теперь у меня есть:

Sub Compare()

Worksheets(Sheet1).Activate
        For w = 1 To Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
        For v = -10 To 10
        If Sheet1.Cells(w, "A").Value = Sheet1.Cells(w + v, "A").Value And Sheet1.Cells(w, "B").Value = Sheet1.Cells(w + v, "B").Value And Sheet1.Cells(w, "C").Value = Sheet1.Cells(w + v, "C").Value And Sheet1.Cells(w, "D").Value = Sheet1.Cells(w + v, "D").Value And Sheet1.Cells(w, "E").Value <> Sheet1.Cells(w + v, "E").Value Then
        Sheet1.Cells(w, "F").Value = "X"
        End If
        Next v
        Next w


End Sub

Но он не запустится.Что мне нужно изменить, чтобы это заработало?

1 Ответ

0 голосов
/ 13 октября 2018

Многое изменилось.Также в вашем вопросе говорилось о проверке 3 строк, поэтому я установил переменную vrange=3

 Sub Compare()
    Dim crit As Boolean
    vrange = 3
   'Sheet1.Activate
   Endi = Sheet1.Cells(1, 1).End(xlDown).Row
            For r = 1 To Endi
              vmin = WorksheetFunction.max(1, r - vrange) - r
              vmax = WorksheetFunction.min(Endi, r + vrange) - r
               For v = vmin To vmax
                crit = True
                For c = 1 To 4
                 crit = crit And Sheet1.Cells(r, c).value = Sheet1.Cells(r + v, c).value
                Next c
                If crit And Sheet1.Cells(r, 5).value <> Sheet1.Cells(r + v, 5).value Then
                 Sheet1.Cells(r, 6).value = "X"
                End If
               Next v
            Next r


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