【问题标题】:Conditional Formatting based on location of data change基于数据更改位置的条件格式
【发布时间】:2014-04-16 21:02:03
【问题描述】:

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

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

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

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

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

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

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

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

有人可以帮我解决这个问题吗...我通过数小时的测试了解到,传统的条件格式无法做到这一点,而且我没有 VBA 知识来编写我的代码拥有。

感谢您的帮助。

【问题讨论】:

    标签: excel conditional-formatting vba


    【解决方案1】:

    这只是将您推向正确方向的一般答案。

    在进行条件格式化时录制宏以获取基础知识:

        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
    

    然后用它来构建一些代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多