如何在excel中设置自动改变某列单元格的背景颜色?
A列文字描述,B列为日期,C列位文字
限定条件如下:
如果C1为J,则A1背景色不变;
如果B1日期对在今天之后三天,A1背景色不变;
如果B1日期在今天和三天后之间的日期,A1背景色为黄色;
如果B1日期为过去的日期,A1背景色为红色。
A2、A3...An对应的判定值为B2、B3...Bn。
有什么好方法么?我知道条件格式可以完成一个,但是后面的A2、A3可以直接队赢的复制规则么?
但是复制格式的话,判定条件都是相对于B1的,如何自动变为后续的? 展开
一、问题的解决办法
关于这个问题,只能使用VBA来做,下面,一个非常实用的也很简单的通用的方法。
二、实例制作
假如,工作薄中存在这样的一个工作表。
2.在这个工作薄的任何一个工作表,只要对方修改了哪个单元格的值,其值与原来的不一样,那么,对应单元格的背景颜色就会变成红色的。
3.以下是制作的过程,请您认真仔细的看了,否则会功亏一篑。
4.在工作表激活的状态下,按下“Alt+F11”组合键,弹出Microsoft Visual Basic窗口,如下图!
5.然后,如上图一样,找到ThisWorkbook点击右键,选择“查看代码”,之后,会弹出如下图的代码编写窗口。
6.上图中,请先选择好“通用”对象名,之后,直接输入上述被选中的代码。
最后,紧跟着直接输入如下的代码,以完成上述的所有代码的输入:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MyRow = Target.Row
MyColumn = Target.Column
MyNewValue = Cells(MyRow, MyColumn).Value
If (MyNewValue <> MyOldValue) Then
Cells(MyRow, MyColumn).Interior.ColorIndex = 3
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
MyRow = Target.Row
MyColumn = Target.Column
MyOldValue = Cells(MyRow, MyColumn).Value
End Sub
代码输入完成之后,请在Microsoft Visual Basic窗口中进行保存操作,现在,整个代码输入过程就完成了,并且,可以直接使用了。
7.返回到Excel窗口,现在,就来验证一下代码吧!
比如,试图将“大众三七网”改成“文山三七”;试图将“2009-8-1”改成“2119-8-1”,那么,这两个单元格的值与原来的就不一样了,因此,背景颜色自然就会自动变成红色的了。
复制后,C2引用的是B2,C3引用B3。
看错了,是先设置A1条件格式。
设置A1条件格式:
条件1公式:=AND(B1>=TODAY(),B1<=TODAY()+3,C1<>"J"),设置背景为黄色;
条件2公式:=AND(B1<TODAY(),C1<>"J"),设置背景为红色。
因为条件公式中对B1,C1都是相对引用,所以,把格式复制到An时,分别引用的是Bn和Cn格。
一楼回答正确