我正在使用条件格式,我已经使用条件格式几天了,但我无法得到我正在寻找的响应。
我希望根据输入的标记在单元格中显示一个彩色圆圈。但问题是我有六个条件,但我认为 Excel 仅支持五个。这可能吗?
0-20 red color circle
21-39 green color circle
40-54 blue color circle
55-64 yellow color circle
65-79 orange color circle
80-100 pink color circle
最佳答案
如果您仅限于使用图标集的条件格式规则:
如果您不需要圆圈,您可以轻松设置 6 条规则,如下图所示
如果您在 CF 规则中需要超过 4 个彩色圆圈:Create Your Own Excel Icon Set
如果您可以使用 VBA,下面的代码将创建类似于原生 CF 圆圈的风格化圆圈
- 打开 VBA:Alt + F11
- 创建新模块:菜单项插入> 模块并粘贴代码
- 单击第一个子
testIcons()
内的任意位置,然后按 F5 运行它
Option Explicit
Public Sub testIcons()
Application.ScreenUpdating = False
setIcon Sheet1.UsedRange
Application.ScreenUpdating = True
End Sub
Public Sub setIcon(ByRef rng As Range)
Dim cel As Range, sh As Shape, adr As String
For Each sh In rng.Parent.Shapes
If InStrB(sh.Name, "$") > 0 Then sh.Delete
Next: DoEvents
For Each cel In rng
If Not IsError(cel.Value2) Then
If Val(cel.Value2) > 0 And Not IsDate(cel) Then
adr = cel.Address
Set sh = Sheet1.Shapes.AddShape(msoShapeOval, cel.Left + 5, cel.Top + 2, 10, 10)
sh.ShapeStyle = msoShapeStylePreset38: sh.Name = adr
sh.Fill.ForeColor.RGB = getCelColor(Val(cel.Value2))
sh.Fill.Solid
End If
End If
Next
End Sub
Public Function getCelColor(ByRef celVal As Long) As Long
Select Case True
Case celVal < 21: getCelColor = RGB(222, 0, 0): Exit Function
Case celVal < 40: getCelColor = RGB(0, 111, 0): Exit Function
Case celVal < 55: getCelColor = RGB(0, 0, 255): Exit Function
Case celVal < 64: getCelColor = RGB(200, 200, 0): Exit Function
Case celVal < 80: getCelColor = RGB(200, 100, 0): Exit Function
Case celVal <= 100: getCelColor = RGB(200, 0, 200): Exit Function
End Select
End Function
<小时/>
<小时/>
注意:
- VBA 代码应用于小数据
- 它可以生成大量形状,这将使所有其他操作变慢
大约 1,000 行和 20 列的测试:总圆数 19,250;持续时间:47.921875 秒
<小时/>编辑:对子 setIcon()
- 自清洁
如果单元格不包含错误,则仅处理数值
- 它排除包含文本、空单元格或日期的单元格
- 感谢@EEM 的建议
关于excel - 使用带有六个条件的图标集的条件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536860/