我将数据保存在Excel中作为具有计算累积结果的数字(所有累积值的总和为100)。
***********************************
*Result*Cumulative* RGB *
* 230 * 30 * HEX (darkest) *
* 100 * 10 * HEX (lightest)*
* ... * ... * ... *
***********************************
我想写函数/生成颜色"代码"在HEX中,这将是累积值的结果。最高值应该是最暗的颜色,最低值应该是最亮的颜色。
我需要将此结果以CSV格式导出到另一个程序,因此无法使用内置函数生成颜色。
答案 0 :(得分:1)
使用此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
- 是您的累积值百分比。
答案 1 :(得分:0)
无论你的船漂浮着什么。此子程序为您提供灰度字符串,其中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
答案 2 :(得分:0)
以下是从RAND函数生成十六进制值的公式:
= TEXT(DEC2HEX(RAND()* 255), “00”)及TEXT(DEC2HEX(RAND()* 255), “00”)及TEXT(DEC2HEX(RAND()* 255),” 00" )