Excel条件格式化程序

我在Excel中使用条件格式来比较两组数据(在列A中设置1,在列D中设置2)。 条件格式是在列F中,所以如果列A = D,那么列F将变成绿色,如果A / = D,那么列F将变成红色。 问题是,当我删除A和D中的第一个单元格,并将所有单元格向下移动时,整个条件格式化将被擦除。 有没有办法保持永久的条件格式?

[由于某种原因,我无法上传照片…如果可以的话,我会包括一张照片,这样就可以更容易理解上面的内容]

这是Excel的一个通用function,不仅仅是条件格式化。 简而言之,Excel跟踪每个单元格作为一个唯一的对象,如果它移动(如一行被删除),然后它会自动移动引用到该对象引用其新的位置。

假设的例子

考虑单元格F5中的一个公式,它表示'= A5 + D5'。 如果右键单击A3,删除该单元格并向上移动单元格,则F5中的公式现在将读为“= A4 + D5”,因为现在对A5的旧引用现在向上移动了1。

理论上你可以通过使用INDIRECT函数来解决这个问题。 在上面的例子中,假设你想删除A3,然后你希望F5中的单元仍旧读取'= A5 + D5',即使旧的A5已经向上移动了。 你可以用下面的公式来做到这一点:

=INDIRECT("A5")+D5 

因为您是通过将其作为文本string明确写出来而间接引用A5,所以在行和列更改时不会四处移动。 被警告,这往往是违反直觉的。 例如,如果在第2行上方插入新行,则现在您的公式将为:

 =INDIRECT("A5")+D6 

请注意,D6自动移位,但是间接(“A5”)没有。 这可能不是预期的结果。 但是,如果我们假设您经常会删除(并向上移动)列A中的单元格,但您希望将其他所有工作表更改合并,则可以按照您的要求进行操作。 再次忽略你现在的具体问题,考虑一下上面的例子。 我们怎样才能改变它,所以当添加一个新的行时,公式最终会变成A6 + D6? 但是同时,当A3被删除时,现在有公式读取A5 + D5? 总之,我们通过引用D5所在的行来做到这一点,如下所示:

 =INDIRECT("A"&ROW(D5))+D5 

现在,如果添加了一整行,则上面公式中的D5的两个实例都变为D6。 但如果删除A3,则“A”保持“A”,并且D5实例保持D5。

您的情况的实际解决scheme

因此,在你的条件格式中,公式应该如下[适用于所有F列,或者你想要的F列中的任何一个,从F1开始] [两个规则一,其中A <D,另一个A = D; 或者,默认格式化为绿色,并且仅在A <> D]的地方应用RED:

 =INDIRECT("A"&ROW(D1))<>D1 

这个问题的原因很可能是您删除的单元格在条件格式化语法中被引用。 例如对于如果您有一个条件格式应用于具有公式=$A1=$D1单元格F1:F5 ,然后删除单元格A1:A3D1:D3 (向上移动单元格),您会注意到条件语句现在只适用于单元格F3:F5 。 Excel会尝试为您更新这些引用,但偶尔也不是您所期望的。

使用不直接引用单元格的公式可以解决这个问题。 例如:

 =OFFSET($F1,0,-5)=OFFSET($F1,0,-2) 

 =OFFSET($F1,0,-5)<>OFFSET($F1,0,-2) 

现在,当删除列A或D中的任何单元格时,条件格式仍将应用于所有行。