答案1
我想建议您使用简单的 VBA 代码来对指定范围内的文本数据进行条件格式化。
这是最短的方法,现在你要做的是,在数据范围中选择出现次数最多的文本,然后尽可能对其进行排序。
Private Sub CommandButton1_Click()
lRow = Range("A" & Rows.Count).End(xlUp).Row
Set Mrng = Range("A120:A" & lRow)
For Each Cell In Mrng
Select Case Cell.Value
Case "Yes"
cell_colour = 9
Case "No"
cell_colour = 5
Case Else
cell_colour = 3
End Select
Cell.Font.ColorIndex = cell_colour
Next
End Sub
注意: 根据需要应用颜色索引代码并改变数据范围。
希望这对你有帮助。
笔记, 我在发布此代码之前已经测试过它。如果有人有不同意见,请在投反对票之前写下理由。
答案2
似乎没有从 GUI 执行此操作的本机方法。但是,在 VBA 中这并不难。此例程将根据单元格中的值与 和 的比较情况,将范围内每个单元格的前景色/文本颜色设置为在颜色和 颜色之间Target
线性插值的颜色:Lo
Hi
Lo_Val
Hi_Val
Sub Colorize(Target As Range, Lo_Val, Hi_Val, Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B)
Dim R, G, B As Long
delta_val = Hi_Val - Lo_Val
If (delta_val <= 0) Then
MsgBox "Lo_Val and Hi_Val must not be the same, or in the wrong order."
Exit Sub
End If
If (Application.Min(Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B) < 0 _
Or Application.Max(Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B) > 255) Then
MsgBox "Invalid color(s)."
Exit Sub
End If
Delta_R = Hi_R - Lo_R
Delta_G = Hi_G - Lo_G
Delta_B = Hi_B - Lo_B
For Each c In Target
If (c < Lo_Val Or c > Hi_Val) Then
c.Font.Color = 0 ' Black
' Alternatively, set values < Lo_Val to the Lo color
' and set values > Hi_Val to the Hi color.
' Or do nothing, leaving them with whatever color they have now.
Else
Diff_Val = c - Lo_Val
' We probably could just compute (c - Lo_Val) / delta_val
' at this point, but I'm not sure how well that would work
' with the rounding.
R = Round(Lo_R + Delta_R * Diff_Val / delta_val)
G = Round(Lo_G + Delta_G * Diff_Val / delta_val)
B = Round(Lo_B + Delta_B * Diff_Val / delta_val)
' Use 256& to get a constant with value 256 and type Long.
c.Font.Color = R + 256& * G + 256& * 256& * B
End If
Next c
End Sub
看如何在 MS Office 中添加 VBA? 有关如何输入和使用它的一般信息。
为了提高灵活性,我将其编写为带参数的例程。据我所知,从普通的 Excel UI 调用带参数的 VBA 例程是不可能的。您可能需要定义一个短小的宏(带有不参数)使用您想要的参数调用上述方法;例如,
Sub Macro1()
'
' Macro1 Macro
'
Call Colorize(Range("A1:J1"), 1, 10, 255, 0, 0, 0, 0, 255)
End Sub
这会将低数字(1 及以上)设置为红色阴影,将高数字(10 及以下)设置为蓝色阴影。例如,使用问题中的数字,这给我们
(我手动增加了字体大小以使颜色更加清晰)。
然后,您可以从“开发人员”→“代码”→“宏”调用它,或将其绑定到按钮。或者,如果您希望每次更改值时都自动进行格式化,则可以使用例程Worksheet_Change
来调用Colorize
。并且,为了使其行为更像条件格式,您可以对其进行编码以设置Lo_Val
和Hi_Val
当前范围内的最小值和最大值。
笔记:
- 这
Dim R, G, B As Long
行代码似乎没有必要。但是当我使用 plain256
而不是 时,会出现溢出错误256&
。 - 人眼和大脑如何感知颜色的科学原理非常复杂。RGB 值的线性插值可能不是生成颜色分级范围/光谱的最佳算法。
答案3
是的,这是完全有可能的,请按照以下步骤操作。
- 选择数据范围。
- 单击“条件格式”。
- 打擊新規則。
- 查找并选择选项“仅格式化包含以下内容的单元格”
- 在编辑规则描述中。
- 设置“仅格式化单元格”,单元格值和等于然后输入文本,例如东,然后点击格式化按钮并选择适当的文本颜色。
笔记,您需要对相同数据范围的其他文本和颜色重复步骤 1 至 6。
如果可能的话,对数据范围进行排序以便文本按组排列,然后选择并应用条件格式。
希望这对你有帮助。