在 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" )
我将数据保存在 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" )