用选择案例语句评估多个列



我正在尝试评估各列中的多个信息,然后如果答案符合某些条件,则输出值。

我尝试进行扩展的选择案例语句,但我知道我的语法是错误的,或者不可能像我尝试这样做的方式这样做。它还抛出了错误"类型不匹配"。不是完整的代码,而是部分。

Dim EJ As String
Dim EL As String
Dim EX As String
Dim EZ As String
Dim EG As String
EJ = GetCellValue(.Cells(i, "EJ"))
EL = GetCellValue(.Cells(i, "EL"))
EX = GetCellValue(.Cells(i, "EX"))
EZ = GetCellValue(.Cells(i, "EF"))
EG = GetCellValue(.Cells(i, "EG"))
Select Case EJ And EL And EX And EZ
   Case GetCellValue(.Cells(i, "EJ")) = "YES" And _
        GetCellValue(.Cells(i, EL")) "YES" And _
        GetCellValue(.Cells(i, "EX")) = "YES" And _
        GetCellValue(.Cells(i, "EZ")) = "YES"
           .Cells(i, "FI") = Done

如果满足条件,我想在列中输出单词。

Select Case可能不是最佳选择 - 常规If...ElseIf...Else会很好

 If EJ="YES" And EL="YES" And EX="YES" And EZ="YES" Then
     .Cells(i, "FI") = "Done" '<< added quotes here
 Else
     'etc etc
 End If

这可能会大不相同,具体取决于您的其他测试

可以使用Excel公式避免循环。例如,如果i是2到9:

.Range("FI2:FI9").Formula = "=IF(AND(EJ2=""YES"", EL2=""YES"", EX2=""YES"", EZ2=""YES""), ""Done"", """")"
.Range("FI2:FI9").Value = .Range("FI2:FI9").Value  ' optional to convert the formulas to values

您也可以使用过滤器完成任务...

With Range("A1").CurrentRegion 'change to meet your range  
    .AutoFilter
    .AutoFilter Field:=140, Criteria1:="YES"
    .AutoFilter Field:=142, Criteria1:="YES"
    .AutoFilter Field:=154, Criteria1:="YES"
    .AutoFilter Field:=156, Criteria1:="YES"
    On Error Resume Next
    Dim rng As Range
    Set rng = Range("Z2:Z" & Cells(Rows.Count, "Z").End(xlUp).Row)
    Set rng = rng.Cells.SpecialCells(xlCellTypeVisible)
    rng.Offset(, 9).Value = "Done"
End With

注意:将文本插入可见行的列中,而无需循环,从 gary的Student 的答案中调整了So问题,28609977。

最新更新