如何使用公式为 Excel 中的单元格着色?
How to color a cell in Excel using a formula?
我想做这样的事情:
=iif(A1>10,backcolor = black,backcolor = green)
我要的是公式而不是向导。
您应该使用条件格式,而不是使用公式。
Select 相应的列并转到 主页 -> 条件格式 -> 突出显示单元格规则。 之后你可以定义条件,以及单元格应该变成哪种颜色。
如需更详尽的解释,请访问以下 link。 https://support.office.com/en-us/article/Use-a-formula-to-apply-conditional-formatting-fed60dfa-1d3f-4e13-9ecb-f1951ff89d7f?ui=en-US&rs=en-US&ad=US
编辑:
据我所知,使用公式更改单元格的颜色是不可能的。如果有人知道怎么做,请post!同时,这是一个关于如何使用 VBA.
将颜色更改为绿色的小例程
Private Sub changecolor()
Dim i As Long: i = 1
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Do Until i = LastRow
With Range("A" & i)
If .Value > 10 Then
Cells(i, 1).Interior.ColorIndex = 10
End If
End With
i = i + 1
Loop
End Sub
注意: 这个公式每 100k 行大约需要 3~6 秒,这可能会很慢,具体取决于应用程序。 经过 运行 一个小测试后,我发现了以下运行时间:
164269ms for 1000000 records with 45,4% coloured : ~16.4s/100k records
349193ms for 1000000 records with 100% coloured : ~34.9s/100k records
9016ms for 1000000 records with 0% coloured : ~0.9s/100k records
似乎使用 Cells(i, 1).Interior.ColorIndex
以惊人的 34s/100k 记录增加了时间!如果有人知道更好的方法,欢迎不吝赐教!
您可以将公式与 事件宏 结合使用。选择一个单元格,比如 B2 并输入公式:
=IF(A1>10,"black","green")
然后格式化B2自定义;;;
这样会隐藏显示的文字
然后将以下事件宏放置在工作表代码区域中:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
With Range("B2")
If .Value = "green" Then
.Interior.Color = RGB(0, 255, 0)
Else
.Interior.Color = RGB(0, 0, 0)
End If
End With
Application.EnableEvents = True
End Sub
每次重新计算工作表时,宏都会 运行。它将检查 B2 中的文本(即使文本不可见)并相应地调整背景颜色。
因为它是工作表代码,所以安装和自动使用非常容易:
- 右键单击 Excel window
底部附近的选项卡名称
- select 查看代码 - 这会弹出一个 VBE window
- 粘贴内容并关闭 VBE window
如果您有任何疑虑,请先在试用工作表上尝试一下。
如果您保存工作簿,宏也会随之保存。
如果您使用的 Excel 版本晚于 2003,则必须保存
文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE windows
- 清除代码
- 关闭 VBE window
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能运行!
我想做这样的事情:
=iif(A1>10,backcolor = black,backcolor = green)
我要的是公式而不是向导。
您应该使用条件格式,而不是使用公式。 Select 相应的列并转到 主页 -> 条件格式 -> 突出显示单元格规则。 之后你可以定义条件,以及单元格应该变成哪种颜色。
如需更详尽的解释,请访问以下 link。 https://support.office.com/en-us/article/Use-a-formula-to-apply-conditional-formatting-fed60dfa-1d3f-4e13-9ecb-f1951ff89d7f?ui=en-US&rs=en-US&ad=US
编辑:
据我所知,使用公式更改单元格的颜色是不可能的。如果有人知道怎么做,请post!同时,这是一个关于如何使用 VBA.
将颜色更改为绿色的小例程Private Sub changecolor()
Dim i As Long: i = 1
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Do Until i = LastRow
With Range("A" & i)
If .Value > 10 Then
Cells(i, 1).Interior.ColorIndex = 10
End If
End With
i = i + 1
Loop
End Sub
注意: 这个公式每 100k 行大约需要 3~6 秒,这可能会很慢,具体取决于应用程序。 经过 运行 一个小测试后,我发现了以下运行时间:
164269ms for 1000000 records with 45,4% coloured : ~16.4s/100k records
349193ms for 1000000 records with 100% coloured : ~34.9s/100k records
9016ms for 1000000 records with 0% coloured : ~0.9s/100k records
似乎使用 Cells(i, 1).Interior.ColorIndex
以惊人的 34s/100k 记录增加了时间!如果有人知道更好的方法,欢迎不吝赐教!
您可以将公式与 事件宏 结合使用。选择一个单元格,比如 B2 并输入公式:
=IF(A1>10,"black","green")
然后格式化B2自定义;;;
这样会隐藏显示的文字
然后将以下事件宏放置在工作表代码区域中:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
With Range("B2")
If .Value = "green" Then
.Interior.Color = RGB(0, 255, 0)
Else
.Interior.Color = RGB(0, 0, 0)
End If
End With
Application.EnableEvents = True
End Sub
每次重新计算工作表时,宏都会 运行。它将检查 B2 中的文本(即使文本不可见)并相应地调整背景颜色。
因为它是工作表代码,所以安装和自动使用非常容易:
- 右键单击 Excel window 底部附近的选项卡名称
- select 查看代码 - 这会弹出一个 VBE window
- 粘贴内容并关闭 VBE window
如果您有任何疑虑,请先在试用工作表上尝试一下。
如果您保存工作簿,宏也会随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE windows
- 清除代码
- 关闭 VBE window
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能运行!