【发布时间】:2020-01-24 11:53:28
【问题描述】:
我最初需要选择前 5% 的选定项目,但它无法将突出显示的项目的数量四舍五入。例如:如果列表中有 25 项,则 5% 为 1.25,条件格式仅选择 1 项。根据我的报告,它应该四舍五入并选择2个项目。
由于找不到方法,我决定手动计算项目数,以显示要突出显示的项目数(在单元格中)。
- 如果有办法使条件格式对所选项目的数量进行四舍五入会更容易。
例如: .rank = 5(但应该四舍五入) .percent = 真
如果不可能,
- 我想使用条件格式突出显示列中的前 X 值。 X 值(排名)在单元格中计算,每次运行宏都会改变。
我已经尝试了下面的代码,但是它不起作用。
Dim i As Integer
i = Workbooks("a.xlsm").Worksheets("b").Range("A1")
Selection.FormatConditions.AddTop10
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.TopBottom = xlTop10Top
.Rank = i
.Percent = False
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
我在“.rank = i”行上遇到错误,这让我认为不可能在那里分配变量,或者我可能错误地分配了单元格。
我也试过“.rank = i.Value”,这似乎也是错误的(编译错误:无效的限定符)
我是 vba 的新手,如有任何帮助,我们将不胜感激。
ps:使用office 365。
谢谢
更新:只要“i”值不为零,上面的代码就可以工作。 我设法创建了一个简单的 If 语句来防止错误。
'In my report i cannot be below 0
If i > 0 Then
Insert the code above here
'If there is no data to be highlighted
Else
'Do Nothing
End If
【问题讨论】:
-
欢迎来到 SO。您能否发布您的输入和预期输出的示例?
-
如果您需要来自包含数字的单元格中的数字,通常的方法是
rng.Value2。
标签: excel vba formatting conditional-statements conditional-formatting