0

我在 sheet2 中有一个“C”列,它可以有 3 个标准值说(是,否,NA)直到第 100 行。现在在 Sheet1 列 G5 和 G6 中,我想根据以下条件输出结果。条件 1- 如果 Sheet2 C 列中的所有值都是 Yes/NA,则 G5 中的输出值应为 YES,背景为绿色,如果存在任何 NO,则 G6 中的值应为 NO 和红色。条件 2 - 如果 Sheet2 列 C 中的所有值均为否/NA,则 G6 中的输出值应为 NO,背景为红色。

4

1 回答 1

0

试试这个:

Sub YesNoCheck()
    Dim s1 As Worksheet, s2 As Worksheet
    Dim rCheck As Range
    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    Set rCheck = s2.Range("C1:C100")
    s1.Range("G5:G6").Clear
    If wf.CountIf(rCheck, "No") = 0 Then
        s1.Range("G5").Value = "Yes"
        s1.Range("G5").Interior.ColorIndex = 10
        Exit Sub
    End If
    If wf.CountIf(rCheck, "Yes") = 0 Then
        s1.Range("G6").Value = "No"
        s1.Range("G6").Interior.ColorIndex = 3
    End If
End Sub

编辑#1

我的错误,改用这个:

Sub YesNoCheck2()
    Dim s1 As Worksheet, s2 As Worksheet
    Dim rCheck As Range
    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    Set rCheck = s2.Range("C1:C100")
    s1.Range("G5:G6").Clear
    If wf.CountIf(rCheck, "Yes") + wf.CountIf(rCheck, "NA") = 100 Then
        s1.Range("G5").Value = "Yes"
        s1.Range("G5").Interior.ColorIndex = 10
    End If
    If wf.CountIf(rCheck, "No") + wf.CountIf(rCheck, "NA") = 100 Then
        s1.Range("G6").Value = "No"
        s1.Range("G6").Interior.ColorIndex = 3
    End If
End Sub

一位看着我肩膀的朋友指出,如果所有条目都是“NA”,那么这两个条件都可能是真的!

于 2013-09-26T20:21:45.320 回答