我对VBA很新。我想有条件地格式化ActiveCell列的单元格,如果它们不存在于ActiveCell右侧4列的列中,则它们会突出显示为蓝色。我记录了一个宏,它为一组特定的列执行此操作,但我无法更改它,以便它可以根据ActiveCell的位置为任意列集合工作。录制的代码如下所示
Range("Y8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=COUNTIF(AC:AC, Y8)=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
ActiveWindow.SmallScroll Down:=0
有人可以告诉我如何改变这一点,以便Y8是ActiveCell和AC:AC是ActiveCell右侧的第4列。谢谢。
答案 0 :(得分:0)
如果您需要VBA解决方案,请在发布的代码中使用R1C1引用作为COUNTIF位,如:
"=COUNTIF(C[4], R[]C[])=0"
这些是相对引用,Excel会自动计算并将它们转换为适合您的A1样式引用。
可替换地, 如果宏的唯一目的是让这些单元格变为彩色,那么你就不需要宏了。
在第一列中选择您的数据,单元格A1作为您选择中的活动单元格(我将其称为下面的A列,将4列偏移称为E列)并转到条件格式。
添加基于公式的新'条件格式'
输入公式
= ISERROR(MATCH(A1,E:E,0))
然后选择所需的格式。
请注意,由于单元格引用是相对的,因此您可以非常轻松地将格式复制并粘贴到任意列,并且仍然会检查新列右侧的4列。