在 Excel 中生成十六进制颜色

Generating colors HEX in Excel

我将数据保存在 Excel 中,作为带有计算累积结果的数字(所有累积值的总和为 100)。

***********************************
*Result*Cumulative*      RGB      *
* 230  *    30    * HEX (darkest) *
* 100  *    10    * HEX (lightest)*
*  ... *   ...    *      ...      *
***********************************

我想用十六进制写 function/generate 颜色 "code",这将是累积值的结果。最高值应具有最深的颜色,最低值应具有最浅的颜色。

我需要将此结果以 CSV 格式导出到另一个程序,因此无法使用内置函数生成颜色。

随心所欲。这个 sub 给你灰度字符串,100 给出“#000000”,即黑色和 0 给出白色。

Sub ert()
Dim hx As String
CummNum = Cells(1, 1).Value 'number Between 0 and 100
Lightness = Int(255 - CummNum * 2.55)
slhx = Application.WorksheetFunction.Dec2Hex(Lightness)
hx = IIf(Len(slhx) = 2, slhx, 0 & slhx)
hxc = "#" & hx & hx & hx
MsgBox hxc
End Sub

使用这个VBA:

Public Const MaxR = &HCC
Public Const MaxG = &HDD
Public Const MaxB = &HFF

Public Const MinR = &H33
Public Const MinG = &H44
Public Const MinB = &H55

Public Function GETHEXCOLOR(Value As Double) As String
    Dim R, G, B As Integer
    R = Round(Value * (MaxR - MinR) + MinR)
    G = Round(Value * (MaxG - MinG) + MinG)
    B = Round(Value * (MaxB - MinB) + MinB)
    GETHEXCOLOR = "#" _
        & Application.WorksheetFunction.Dec2Hex(R, 2) _
        & Application.WorksheetFunction.Dec2Hex(G, 2) _
        & Application.WorksheetFunction.Dec2Hex(B, 2)
End Function

如何使用:为最亮和最暗的颜色指定常量(在我的例子中 - #CCDDFF#334455)。来自小区的呼叫:

=GETHEXCOLOR(0.45)

0.45 - 是您的累计值百分比。

这是从 RAND 函数生成十六进制值的公式:

=TEXT(DEC2HEX(RAND()*255),"00")&TEXT(DEC2HEX(RAND()*255),"00")&TEXT(DEC2HEX(RAND()*255),"00" )