通过 HEX 或 RGB 定义 Excel 自定义数字格式颜色
Define Excel custom number format color via HEX or RGB
是否可以通过 HEX 或 RGB 定义自定义数字格式,如下所示?
[Black][>5]0.0;[Red][<0]-0.0;[Color34]0.0
我正在寻找深橙色 (#FF9900),但 [Orange]
不适合。
我已经按照 this article, or the few built in by name 的建议尝试了 56 种颜色的全光谱,但 none 甚至接近正确的橙色阴影。
少数Excel内置不包括橙色:
[BLACK][GREEN][RED][BLUE][CYAN][MAGENTA][WHITE][YELLOW]
使用情况如何:
Cells(1, 1).Interior.Color = RGB(&HFF, &H99, &H0)
对答案发表评论:
我知道根据值实现不同字体颜色的唯一方法是:
以数字格式指定颜色 - 为此,Microsoft 本身仅记录了 8 个命名的 [Black]...[Red],甚至 [ColorNN] 也是一个未记录的 hack。
条件格式。
使用VBA.
要以数字格式指定颜色,需要了解 guidelines for customizing a number format。仅记录了 8 种命名颜色 [Black]、[Green]、[White]、[Blue]、[Magenta]、[Yellow]、[Cyan]、[Red]。但是使用 [ColorNN] 和 NN
作为颜色索引也可以用于 56 种索引颜色。要确定哪些颜色被索引到哪个索引,可以使用以下 VBA
宏:
Sub UDColorNumberFormats()
With ActiveSheet
For i = 1 To 56
sNumberFormat = "[Color" & i & "]0"
.Cells(i, 1).Value = sNumberFormat
.Cells(i, 2).NumberFormat = sNumberFormat
.Cells(i, 2).Value = 888888
.Cells(i, 3).Interior.ColorIndex = i
Next
End With
End Sub
运行 Excel Windows 中的这个宏(2007 到 2016 年的版本测试)将显示,例如 [Color45] 是橙色。但是,如果我们查看 ColorIndex Property 的 Microsoft 文档,我们必须看到,即使是 Microsoft 也会显示不同的索引颜色。也许只是因为早期版本没有更新?
正如@Zephyr Mays 必须意识到的那样,Excel for Mac 也使用了不同的索引颜色。因此 Mac 的 Excel 和 Windows 的 Excel 在这一点上不是 100% 兼容的。但是宏也应该 运行 in Excel for Mac。因此,可以检查 Excel 用于 Mac 使用的索引颜色是否是 ColorIndex 属性 文档中显示的颜色。如果是这样,那么 Excel for Mac 使用比 Excel for Windows 使用更早版本的默认调色板。在我看来,这可以称为错误,可以将其报告给 Microsoft。
正如我在上面的评论中指出的,[COLORNN] 中使用的颜色索引在 Libreoffice/Openoffice Calc 中也不同。它们甚至与内部颜色指数不同。它们也依赖于平台(64 位或 32 位)。对我来说,64 位 Ubuntu 的 Libreoffice 有 64 个颜色索引 (1-64) 可用,而 32 位 Windows 的 Libreoffice 只有 32 个颜色索引 (1-32) 可用。但是这种行为不是一个错误,因为 Libreoffice/Openoffice Calc 不是 100% Excel 兼容并且不希望它是。
我浏览过很多这样的主题,但在 CELLS 中为数字着色的最简单解决方案是使用条件格式。
但是对于 CHARTS,最简单的方法是使用基本的字体格式设置选项——您可以在那里指定任何十六进制值。例如,如果您只想为负数着色,您可以通过在数字格式代码中编辑它来覆盖正数的字体格式。
例如:我想在我的图表刻度上为负数着色深红色(一种颜色不是预编码的 56 种颜色 Excel 之一)。
- select图表的y轴,去工具栏里的字体选项,把整个轴变成深红色。
- 要再次将正数变为黑色,请转至格式轴 -> 轴选项 -> 数字 -> 格式代码。
- 然后指定正数为黑色"[Color1]#,##0%;-#,##0%".
- 瞧 - 只有负数保留深红色,而正数被硬编码为黑色。
您仍然必须让其中一种颜色成为 56 种 Excel 预设中的一种,但这允许您将一种颜色设置为不同的颜色。
看起来 excel 使用 ABGR(Alpha、红、绿、蓝)而不是 RGBA(红、绿、蓝、Alpha)。
深橙色,RGB中的#FF9900应该写成excel中的#0099FF(#FF0099FF带alpha)。
Cells(1, 1).Interior.Color = &hFF0099FF
是否可以通过 HEX 或 RGB 定义自定义数字格式,如下所示?
[Black][>5]0.0;[Red][<0]-0.0;[Color34]0.0
我正在寻找深橙色 (#FF9900),但 [Orange]
不适合。
我已经按照 this article, or the few built in by name 的建议尝试了 56 种颜色的全光谱,但 none 甚至接近正确的橙色阴影。
少数Excel内置不包括橙色:
[BLACK][GREEN][RED][BLUE][CYAN][MAGENTA][WHITE][YELLOW]
使用情况如何:
Cells(1, 1).Interior.Color = RGB(&HFF, &H99, &H0)
对答案发表评论:
我知道根据值实现不同字体颜色的唯一方法是:
以数字格式指定颜色 - 为此,Microsoft 本身仅记录了 8 个命名的 [Black]...[Red],甚至 [ColorNN] 也是一个未记录的 hack。
条件格式。
使用VBA.
要以数字格式指定颜色,需要了解 guidelines for customizing a number format。仅记录了 8 种命名颜色 [Black]、[Green]、[White]、[Blue]、[Magenta]、[Yellow]、[Cyan]、[Red]。但是使用 [ColorNN] 和 NN
作为颜色索引也可以用于 56 种索引颜色。要确定哪些颜色被索引到哪个索引,可以使用以下 VBA
宏:
Sub UDColorNumberFormats()
With ActiveSheet
For i = 1 To 56
sNumberFormat = "[Color" & i & "]0"
.Cells(i, 1).Value = sNumberFormat
.Cells(i, 2).NumberFormat = sNumberFormat
.Cells(i, 2).Value = 888888
.Cells(i, 3).Interior.ColorIndex = i
Next
End With
End Sub
运行 Excel Windows 中的这个宏(2007 到 2016 年的版本测试)将显示,例如 [Color45] 是橙色。但是,如果我们查看 ColorIndex Property 的 Microsoft 文档,我们必须看到,即使是 Microsoft 也会显示不同的索引颜色。也许只是因为早期版本没有更新?
正如@Zephyr Mays 必须意识到的那样,Excel for Mac 也使用了不同的索引颜色。因此 Mac 的 Excel 和 Windows 的 Excel 在这一点上不是 100% 兼容的。但是宏也应该 运行 in Excel for Mac。因此,可以检查 Excel 用于 Mac 使用的索引颜色是否是 ColorIndex 属性 文档中显示的颜色。如果是这样,那么 Excel for Mac 使用比 Excel for Windows 使用更早版本的默认调色板。在我看来,这可以称为错误,可以将其报告给 Microsoft。
正如我在上面的评论中指出的,[COLORNN] 中使用的颜色索引在 Libreoffice/Openoffice Calc 中也不同。它们甚至与内部颜色指数不同。它们也依赖于平台(64 位或 32 位)。对我来说,64 位 Ubuntu 的 Libreoffice 有 64 个颜色索引 (1-64) 可用,而 32 位 Windows 的 Libreoffice 只有 32 个颜色索引 (1-32) 可用。但是这种行为不是一个错误,因为 Libreoffice/Openoffice Calc 不是 100% Excel 兼容并且不希望它是。
我浏览过很多这样的主题,但在 CELLS 中为数字着色的最简单解决方案是使用条件格式。
但是对于 CHARTS,最简单的方法是使用基本的字体格式设置选项——您可以在那里指定任何十六进制值。例如,如果您只想为负数着色,您可以通过在数字格式代码中编辑它来覆盖正数的字体格式。
例如:我想在我的图表刻度上为负数着色深红色(一种颜色不是预编码的 56 种颜色 Excel 之一)。
- select图表的y轴,去工具栏里的字体选项,把整个轴变成深红色。
- 要再次将正数变为黑色,请转至格式轴 -> 轴选项 -> 数字 -> 格式代码。
- 然后指定正数为黑色"[Color1]#,##0%;-#,##0%".
- 瞧 - 只有负数保留深红色,而正数被硬编码为黑色。
您仍然必须让其中一种颜色成为 56 种 Excel 预设中的一种,但这允许您将一种颜色设置为不同的颜色。
看起来 excel 使用 ABGR(Alpha、红、绿、蓝)而不是 RGBA(红、绿、蓝、Alpha)。
深橙色,RGB中的#FF9900应该写成excel中的#0099FF(#FF0099FF带alpha)。
Cells(1, 1).Interior.Color = &hFF0099FF