首页 > 解决方案 > 有条件的,我怎样才能使操作自动化?

问题描述

我需要我的代码可以评估几个单元格的值,并且我不需要为每个答案更改单元格

我希望这个过程是自动的

我尝试使用 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

标签: excelvbafor-loopconditional-statementseach

解决方案


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(AND(UPPER(E5)="OK",UPPER(E5)="OK",UPPER(E5)="OK"),"接受","不接受")

如果您需要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

在此处输入图像描述


推荐阅读