Excel多行条件色标

时间:2018-08-23 17:09:55

标签: excel excel-vba excel-formula excel-2016

我有一个电子表格,其中显示了一系列产品的库存数据。我每天都有一列,这些值显示了我的库存水平将如何随着时间下降。

我想使用色标来轻松查看某些产品的库存何时耗尽。我的秤的最小,中点和最大点是基于不同列中的值,并且每个产品的该值都不同。根据它是中点还是最大点,它会相乘。不幸的是,色标不支持相对引用,这意味着我不得不从第一行复制条件格式,并更改每隔一行的最小,中点和最大点引用。当我的工作表上有数百行时,是否有办法解决?

这是我目前拥有的:

Example 1

当我尝试编辑第二行的条件格式时,我可以看到中点和最大点引用仍然来自上一行,因为它们是绝对引用:

Example 2

1 个答案:

答案 0 :(得分:0)

每行都需要一个单独的规则,并且可以使用自动创建这些规则。

下面的代码调整公式=$D$3*3=$D$3*5中的行号。注释指出您可能需要更改工作表名称,行数和列字母的位置。

Option Explicit
Sub ApplyConditionalFormatting()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") ' change to your sheet here
    Dim rw As Long
    Dim rng As Range

    For rw = 3 To 8 ' change to your respective rows
        With ws
            Set rng = .Range(.Cells(rw, "E"), .Cells(rw, "K")) ' change to your respective columns

            With rng
                .FormatConditions.AddColorScale ColorScaleType:=3
                .FormatConditions(.FormatConditions.Count).SetFirstPriority  ' now its index is 1, in case there already was cond formatting applied
            End With

            With rng.FormatConditions(1)
                With .ColorScaleCriteria(1)
                    .Type = xlConditionValueNumber
                    .Value = 0
                    .FormatColor.Color = 7039480
                End With

                With .ColorScaleCriteria(2)
                    .Type = xlConditionValueFormula
                    .Value = "='" & ws.Name & "'!$D$" & rw & "*3" ' References column D, change as needed
                    .FormatColor.Color = 8711167
                End With

                With .ColorScaleCriteria(3)
                    .Type = xlConditionValueFormula
                    .Value = "='" & ws.Name & "'!$D$" & rw & "*5" ' References column D, change as needed
                    .FormatColor.Color = 8109667
                End With
            End With
        End With
    Next rw
End Sub

之前

enter image description here

之后-显示第8行的规则;请注意该公式引用了$D$8

enter image description here