Условно, как я могу автоматизировать операцию? - PullRequest
0 голосов
/ 23 февраля 2020

Мне нужно, чтобы мой код мог оценить значение нескольких ячеек, и мне не нужно менять ячейку для каждого ответа

Я хочу, чтобы этот процесс был автоматизирован c

Я пытаюсь использовать for, но это не работает

Sub Test()
If Range("E5").Value <> "OK" Or Range("F5").Value <> "OK" Or Range("G5").Value <> "OK" Then
    Range("h5").Value = "NOT ACEPT"
ElseIf Range("E5").Value = "NOT OK" And Range("F5").Value = "NOT OK" And Range("G5").Value = "NOT OK" Then
    Range("H5").Value = "ACEPT"
End If
End Sub

1 Ответ

0 голосов
/ 23 февраля 2020
Sub test()

If WorksheetFunction.Or(UCase(Range("E5")) <> "OK", UCase(Range("F5")) <> "OK", UCase(Range("G5")) <> "OK") Then
Range("h5").Value = "NOT ACCEPT"
Else
Range("H5").Value = "ACCEPT"
End If
End Sub

Если вы просто хотите, чтобы ячейка H5 «принимала» или «не принимала», вам не нужен vba, вы можете просто сделать это с формулой и скопировать ее до последней ячейки в столбце H

IF (И (ВЕРХ (E5) = "ОК", ВЕРХ (E5) = "ОК", ВЕРХ (E5) = "ОК"), "Принять", "Не принимать")

, если вам нужен vba затем измените приведенный выше код, чтобы он соответствовал вашим требованиям о нескольких строках в столбце H

Sub test()
Dim lastrow, cell As Range

lastrow = Cells(1048576, 7).End(xlUp).Row

' not fill the formula from H5 to the last row

For Each cell In Range("H5:H" & lastrow)
    If WorksheetFunction.Or(UCase(cell.Offset(0, -3)) <> "OK", UCase(cell.Offset(0, -2)) <> "OK", UCase(cell.Offset(0, -1)) <> "OK") Then
    cell = "NOT ACCEPT"
    Else
    cell = "ACCEPT"
    End If

Next
End Sub

enter image description here

...