2013-09-26 79 views
0

我在sheet2中有一个列“C”,它可以有3个标准值表示(是,否,NA),直到第100行为止。现在在Sheet1列G5 & G6中,我想根据以下条件输出结果。条件1 - 如果Sheet2 Column C中的所有值均为Yes/NA,则G5中的输出值应为YES,且背景为绿色,如果有任何NO,则G6中的值应为NO和红色。 条件2 - 如果Sheet2 Column C中的所有值都是No/NA,则G6中的输出值应该为背景红色的NO。Excel宏:使用excel VBA检查数据和着色

+0

两个步骤是找出一个公式 - 尝试'COUNTIFS' - 计算“是”或“否”部分,然后将条件格式应用于该单元格。不需要VBA。 –

+0

你可以在上面提到的标准中提出公式,我应该在哪里提出该公式。对不起,我不熟悉Excel公式和条件格式。 – sandesh

+0

@DougGlancy:请你详细说明并帮助我。 – sandesh

回答

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 

看在我的肩膀上有朋友指出,如果所有条目是“不适用”,那么这两个条件可能是真的!

+0

完美谢谢@加里的 – sandesh