0

シート2に列「C」があり、100行目まで3つの標準値(はい、いいえ、NA)を言うことができます。Sheet1 列 G5 & G6 で、次の条件に基づいて結果を出力したいと思います。条件 1- Sheet2 列 C のすべての値が Yes/NA の場合、出力値は G5 で YES で、背景色は緑色で、NO が存在する場合、値は G6 で NO と赤色である必要があります。条件 2- Sheet2 列 C のすべての値が No/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 に答える