基于数据变化位置的条件格式

时间:2014-04-16 10:51:21

标签: excel-vba conditional-formatting vba excel

我知道我需要做什么,但我不确定如何通过VBA实现它。

基本上,我需要使用填充颜色格式化一行数据。

  

20个数据点的示例行可能如下所示:

     

80 80 80 80 80 80 95 95 95 95 95 95 95 85 85 85 85 85 85 85

这是我的基本标准......任何等于90或以上的东西都将始终为绿色。 除非在下一次减少的10个单元位置内,否则80-90之间的任何内容都将为绿色。如果它在下一次缩减的10个单元格位置内,我需要格式化黄色。

所以在上面的例子中,前三个80s将是GREEN,接下来的三个80s将是黄色,95s将全部为绿色,而85s将全部为绿色。

我基本上需要代码从位置X开始,读取接下来的两个位置(Y和Z),确定Z是否小于Y(如果Z不小于Y,Y和Z需要增加一个单元格然后再检查Z是否小于Y)并且Z在X的10个单元格位置内,然后将所有单元格从X格式化为Y,直到Y为黄色。

另一个(也许更简单)选项是让代码查看整行数据,查找Z小于Y的所有实例,然后返回并确定10个单元格位置中是否有任何单元格值为80-90,颜色为黄色。

有人可以帮我解决这个问题吗...我已经通过多个小时的测试了解到它无法通过传统的条件格式化来完成,而且我没有VBA知识在我的代码上提出这些代码自己的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这只是推动你朝着正确方向前进的一般答案。

在执行条件格式设置时记录宏以获得基础:

    Range("H26").Select
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=80", Formula2:="=90"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Color = -16752384
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 13561798
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub

然后用它来构建一些代码