使用条件格式来按类别交替数据的格式

我有一个像这样的一堆行的电子表格:

Name | ID | Category | Attributes... -------------------------------------------------------- name0 | 753 | cat1 | ... name1 | 724 | cat1 | ... name2 | 149 | cat1 | ... name3 | 265 | cat1 | ... name4 | 032 | cat2 | ... name5 | 991 | cat2 | ... name6 | 238 | cat2 | ... name7 | 005 | cat3 | ... name8 | 632 | cat3 | ... name9 | 393 | cat3 | ... 

我想格式化它,所以区分不同类别的行有点容易。 因此,我希望根据“ Category列中的值来交替着色和不着色。 换句话说,在上面的例子中,我想让cat1的行变黑,然后cat2变轻, cat3再次变黑。

这可能吗?

请selectColumnsA:D和HOME>样式 – 条件格式,新规则…, 使用公式来确定要格式化哪些单元格,在此公式为真的情况下格式化值

 =ISEVEN(SUMPRODUCT(1/COUNTIF($C$1:$C1,$C$1:$C1))) 

格式化... ,select您select的格式(黑暗?),OK,OK。

对于“浅色”,我假设要么没有填充足够轻,否则,你应用标准填充来适应(CF,如果触发,将覆盖它)。

您将要设置两个条件格式规则基于计数唯一types的公式,如下所示。

 =MOD(INT(SUMPRODUCT(1/COUNTIF($C$2:$C2, $C$2:$C2))), 2) =NOT(MOD(INT(SUMPRODUCT(1/COUNTIF($C$2:$C2, $C$2:$C2))), 2)) 

问题是您不希望使用完整的列引用来扩展它,因为它使用SUMPRODUCT函数来提供数组(或循环 )types的处理。 如果添加或删除行和/或列,跟踪它覆盖的范围就成了一个问题。

解决scheme是准备好一个子过程,可以根据Range.CurrentRegion属性快速创build或更新两个CF规则。 这是数据的“岛”,直到遇到完全空白的行或列。

 Sub Set_CF_rules() With Worksheets("Sheet1") With .Cells(1, 1).CurrentRegion With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(INT(SUMPRODUCT(1/COUNTIF($C$2:$C2, $C$2:$C2))), 2)" With .FormatConditions(.FormatConditions.Count).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.249946592608417 .Parent.StopIfTrue = True End With .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=NOT(MOD(INT(SUMPRODUCT(1/COUNTIF($C$2:$C2, $C$2:$C2))), 2))" With .FormatConditions(.FormatConditions.Count).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.799981688894314 .Parent.StopIfTrue = True End With End With End With End With End Sub 

我已经为高光“条纹”设置了深红色和淡红色。使用macros录制器进行实验,同时填充具有不同颜色,阴影和图案的单元格,直到find所需内容并replace上述代码中的相应值。

条件格式条带

我不相信这很容易用内置工具完成,但是您可以添加一个计算列,然后应用基于它的条件格式。

这个例子假设你的数据是按类别列sorting的。 如果不按类别列对表格进行sorting,则需要多一步,即创build一个查找表,在该表中计算TRUE / FALSE COL_STRIPE值,然后在COL_STRIPE列中对其执行VLOOKUP。

这是一个工作的例子

  1. 添加计算列
    • 添加一个名为COL_STRIPE的新列,在我的例子中是E列。
    • 将以下公式添加到列中: =IF(C2<>C1,IFERROR(NOT(E1),FALSE),E1)
    • 此列的值为true或false。
    • 如果类别与前一行相同,则COL_STRIPE值保持不变,否则将取消。
    • 在第一行的情况下, IFERROR()语句会将其设置为false。
    • 将该公式向下复制到列中。
  2. 应用条件格式
    • 突出显示您的表
    • 转到主页function区>条件格式>突出显示单元格规则>更多规则
    • 使用公式来确定要格式化的单元格: =NOT($E2) ,这将将格式应用于E列(COL_STRIPE)为FALSE所有行
    • 点击格式button设置你想要的背景颜色。