我有一个电子表格,其中显示了一系列产品的库存数据。我每天都有一列,这些值显示了我的库存水平将如何随着时间下降。
我想使用色标来轻松查看某些产品的库存何时耗尽。我的秤的最小,中点和最大点是基于不同列中的值,并且每个产品的该值都不同。根据它是中点还是最大点,它会相乘。不幸的是,色标不支持相对引用,这意味着我不得不从第一行复制条件格式,并更改每隔一行的最小,中点和最大点引用。当我的工作表上有数百行时,是否有办法解决?
这是我目前拥有的:
当我尝试编辑第二行的条件格式时,我可以看到中点和最大点引用仍然来自上一行,因为它们是绝对引用:
答案 0 :(得分:0)
每行都需要一个单独的规则,并且可以使用vba自动创建这些规则。
下面的代码调整公式=$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
之前
之后-显示第8行的规则;请注意该公式引用了$D$8