Excel静态条件格式区

时间:2016-08-31 09:06:34

标签: excel excel-2013 conditional-formatting

我想为整个文档创建静态条件格式(例如应用于A1:Z999),如果在中间添加新行,则不会被新的中间条件格式替换。

详细说明:

作为一个例子,我有以下表格内容

   |  A  |  B  |  C
 ----------------------
 1 | A.1 |     |            FIRST  LEVEL ROW
 2 |     | B.2 |            SECOND LEVEL ROW
 3 |     |     | C.3        THIRD  LEVEL ROW
 4 |     |     | C.4        THIRD  LEVEL ROW
 5 |     | B.5 |            SECOND LEVEL ROW
 6 |     |     | C.6        THIRD  LEVEL ROW
 7 | A.7 |     |            FIRST  LEVEL ROW
 8 |     | B.8 |            SECOND LEVEL ROW 
 9 |     |     | C.9        THIRD  LEVEL ROW
10 |     |     | C.10       THIRD  LEVEL ROW

我现在希望所有具有一种缩进子行的行以特定方式着色,例如

  • 第1行和第7行为深灰色,因为它们有第2行和第8行作为缩进子行(FIRST LEVEL)
  • 由于缩进的子行3,6,9(SECOND LEVEL)
  • ,浅灰色的行2,5,8

我可以通过条件格式

来做到这一点
  FIRST LEVEL
  * apply if : AND(LENGTH($A1) > 0; LENGTH($B2) > 0)
  * apply to : $A1:$C10
  * modify   : dark grey background color

  SECOND LEVEL
  * apply if : AND(LENGTH($B1) > 0; LENGTH($C2) > 0)
  * apply to : $A1:$C10      
  * modify   : light grey background color

这很顺利,没有任何问题。

但是,如果我现在在第7行之前插入两个新的空行(创建新的第7行和第8行,并将包含A.7的第7行转移到第9行),则条件格式由新条目扩展,插入新规则中间行7/8并分成原始行...

  FIRST LEVEL (now split)
  * apply if : AND(LENGTH($A1) > 0; LENGTH($B2) > 0)
  * apply to : $A$1:$C$5;$A$9:$C$12
  * modify   : dark grey background color

  SECOND LEVEL (now split)
  * apply if : AND(LENGTH($B1) > 0; LENGTH($C2) > 0)
  * apply to : $A$1:$C$5;$A$9:$C$12
  * modify   : light grey background color

  FIRST LEVEL (intermediate)
  * apply if : AND(LENGTH($A6) > 0; LENGTH($B9) > 0)
  * apply to : $A$6:$C$8
  * modify   : dark grey background color

  SECOND LEVEL (intermediate)
  * apply if : AND(LENGTH($B6) > 0; LENGTH($C9) > 0)
  * apply to : $A$6:$C$8
  * modify   : light grey background color

这不再正确,因为它不再检查邻接行(例如,错误地使用A6 / B9)。因此,每次添加新行时都必须修改条件格式,以便恢复应用于所有行的原始行为。

长话短说:有没有办法告诉Excel使用STATIC条件格式并简单地扩展它应用的区域而不是添加新的中间区域?

使用Excel 2013

1 个答案:

答案 0 :(得分:0)

通过应用整列引用轻松避免:

对于Range而不是$A:$C

$A1:$C10

并一次设置一行的规则,即只测试哪个列包含值,例如FIRST LEVEL

=AND($A1<>"",COUNTA($A1:$C1))  

其中AND是为了避免格式化所有ColumnsA:C为空的行。