使用 Excel 中的条件格式,我希望在设置maximum
数据栏的值时引用一组单元格的相邻单元格。
例如,以下面这个简单的表格为例。我希望在单元格中显示一个数据条,即 30/100 B2
, 200\200B3
和 100\150 B4
。
A B
1 | To Pay | Paid |
3 | £100 | £30 |
4 | £200 | £200 |
5 | £150 | £100 |
但是,使用数据栏时,Excel 不允许相对引用,这意味着我只能将列中的每个单元格B
与列中的其他单元格进行比较B
,这在我的用例中完全没有意义。
我可以做的是为每行添加一条规则,将单个单元格引用为值maximum
;例如,我可以向单元格添加 CF 规则,以使用公式B2
引用。但是,这意味着我必须为列中的每一行添加一条规则(目前大约 350 条),这很容易出错并且需要大量维护。A2
maximum
B
有没有办法在 Excel 中使用单个 CF 规则实现这一点?
期望结果
答案1
恐怕没有 VBA 就不可能。
数据栏规则必须参考放置数据栏的单元格的内容。
要比较它们,您必须计算另一列中的比率并将数据栏放在那里。计算出的比率可以选择性地隐藏。
使用 VBA 代码的解决方案:
Sub AddDataBars()
Dim c As Range
' select the column range to be formatted
For Each c In Selection
c.FormatConditions.Delete
With c.FormatConditions.AddDatabar
.ShowValue = True
.MinPoint.Modify newtype:=xlConditionValueAutomaticMin
.MaxPoint.Modify newtype:=xlConditionValueFormula, _
newvalue:="=" & c.Offset(, -1).Address
.BarColor.Color = RGB(0, 176, 80) ' 5287936
.BarFillType = xlDataBarFillSolid
End With
Next c
End Sub