我有一个包含大量行的电子表格:
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
再次变暗,一直向下片。
这可能吗?
答案 0 :(得分:3)
请选择ColumnsA:D和HOME>样式 - 条件格式,新规则...,使用公式确定要格式化的单元格和格式化此公式的值::
=ISEVEN(SUMPRODUCT(1/COUNTIF($C$1:$C1,$C$1:$C1)))
格式化... ,选择你选择的格式(黑暗?),好的,好的。
对于' light'我假设没有填充是否足够轻,或者,如果没有,你应用标准填充以适应(CF,触发,将覆盖它)。
COUNTIF是一个顺序计数器,每个类别的1
开始。将其划分为1
并应用SUMPRODUCT按类别生成顺序计数器 (仅在类别时更改)。 ISEVEN适用于挑选其他类别。为了研究公式的详细工作原理,M $提供了评估公式。
答案 1 :(得分:2)
您将需要根据计数唯一类型的公式设置两个条件格式规则,如下所示。
=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 function来提供数组(或循环)类型处理。如果添加或删除行和/或列,则跟踪它所覆盖的范围会成为问题。
解决方案是准备一个子程序,可以根据Range.CurrentRegion property快速为您创建或更新两个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
我设置了一个深红色和一个淡红色用于突出显示'条纹'用宏录制器进行实验,同时填充具有不同颜色,阴影和图案的单元格,直到找到所需的内容并替换上面代码中的相应值