对列进行颜色编码

在一个Excel文件中,我需要根据该列中“是”的数量对列单元格进行颜色编码。 如果没有“是”:红色; 一个“是”:黄色:2或大于2“是”:绿色。

这可以通过一些macros来完成吗?

更新

已经使这个macros,但我不能够运行或debugging它,因为它给出了溢出的错误; variablesN即使在赋值为0之后也取值为32676。

Sub testcolor() Dim i As Integer Dim j As Integer Dim N As Integer Dim z As Integer Dim val As String i = 7 j = 5 N = 0 MsgBox (N) For j = 5 To 15 Do While i < 13 val = ActiveSheet.Cells(i, j).Value If val = "Yes" Then N = N + 1 Loop If N = 0 Then Range(i + 2, j).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With End If If N = 1 Then Range(i + 2, j).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With End If If N > 1 Then Range(i + 2, j).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5296274 .TintAndShade = 0 .PatternTintAndShade = 0 End With End If Next j End Sub 

在这里输入图像说明在这里输入图像说明

试试这个(相应地设置RGB和ColorIndex,如果你想要单元格的文本颜色或填充颜色,则不会得到):

 Sub ConditionalColorColumn() count = Application.WorksheetFunction.CountIf(arg1:=Range("D:D"), arg2:="yes") 'MsgBox count If count = 1 Then ActiveSheet.Range("D:D").Font.Color = RGB(255, 255, 0) ActiveSheet.Range("D:D").Interior.ColorIndex = 6 ElseIf count >= 2 Then ActiveSheet.Range("D:D").Font.Color = RGB(255, 255, 0) ActiveSheet.Range("D:D").Interior.ColorIndex = 6 Else ActiveSheet.Range("D:D").Font.Color = RGB(255, 255, 0) ActiveSheet.Range("D:D").Interior.ColorIndex = 6 End If End Sub 

附件:你可以尝试多列

 Sub ConditionalColorMultiColumn() 'Dim arr As Variant 'Dim desCell As Range arr = Array("E", "F", "G", "H", "I","J","K") For i = 0 To UBound(arr) Set rngg = Range(arr(i) & 7 & ":" & arr(i) & 12) 'rngg.Select Set desCell = Cells(14, arr(i)) Count = Application.WorksheetFunction.CountIf(arg1:=rngg, arg2:="yes") 'MsgBox count If Count = 1 Then desCell.Interior.ColorIndex = 6 ElseIf Count >= 2 Then desCell.Interior.ColorIndex = 4 Else: desCell.Interior.ColorIndex = 3 End If Set desCell = Nothing Set rngg = Nothing Next End Sub 

另一种解决这个问题的方法是使用条件格式

  1. select您想要格式化的区域。 看起来像是你书中的范围E14:K14
  2. 单击主页 > 条件格式 > 新规则
  3. 在“ 新build格式规则”对话框中,单击“ 使用公式确定要格式化的单元格 ”。
  4. 在“ 此公式为真的格式值 ”下,键入以下公式:

 =AND(E14="Yes",COUNTIF(E:E,"Yes")>=2,ROW()>=7,ROW()<=13) 

  1. 接下来,点击“ 格式 ”button。
  2. 现在,只需select你想要的devise。 也许有色背景就够了。
  3. GREEN公式已经完成,但是您必须重复这些步骤来获得黄色和红色公式。
  4. 黄色的公式:

 =AND(E14="Yes",COUNTIF(E:E,"Yes")<2;COUNTIF(E:E,"Yes")>0,ROW()>=7,ROW()<=13) 

  1. 而红色的公式:

 =AND(E14="Yes",COUNTIF(E:E,"Yes")=0,ROW()>=7,ROW()<=13) 

不要忘记应用您的格式条件(绿色/黄色/红色背景)。

让我为你打破绿色公式:

  • AND() – 这些()括号之间的所有条件都需要被满足。
  • E14 =“是” – 单元格必须包含单词“是”。
  • COUNTIF(E:E,“是”)> = 2 – 该列必须有2个或更多“是”。
  • ROW()> = 7,ROW()<= 13) – 单元格必须位于第7到13行之间的某处。

只要需要,就可以很容易地更改这些参数。 也许这比跳入一大块代码更容易。 使用有多种条件的条件格式化可能看起来相当困难,但是一旦得到了它的窍门,您将不会停止使用它。