【问题标题】:Generating colors HEX in Excel在 Excel 中生成颜色 HEX
【发布时间】:2015-05-06 11:32:19
【问题描述】:

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

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

我想用 HEX 编写函数/生成颜色“代码”,这将是累积值的结果。最高值应该有最深的颜色,最低值应该有最浅的颜色。

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

【问题讨论】:

  • 你能给出一些预期的输出吗?您可以使用=DEC2HEX() 将十进制转换为十六进制
  • 结果应该是这样的 (excel-easy.com/examples/color-scales.html) 但是颜色我想获取每个累积值的颜色代码。例如,结果 230 应该在 RGB 列中使用 HEX #ce1126(红色)。结果 100 在 RGB 列中应该有 HEX #FCEE21(黄色)。
  • 能否请您解释一下如何转换 230 -> #CE1126 和 100 -> #FCEE21?

标签: excel colors excel-formula hex


【解决方案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 - 是以百分比表示的累计值。

【讨论】:

  • 非常感谢!这正是我正在寻找的 :-) 不幸的是,当我尝试运行此脚本时,我收到错误消息“编译错误:常量、固定长度字符串、数组、用户定义类型和声明的语句不允许作为公共成员对象。我有 Excel 2010。是我的 Excel 版本或脚本中的某个地方有问题吗?谢谢!
  • 尝试将Public Const 替换为Private Const。会发生什么?
  • Hvau,它有效! :-) 我会尽可能多地给你投票 :-) 我只是将全局常量替换为私有常量。公共功能就好了。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    任何东西都能让你的船浮起来。这个 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2020-11-21
      • 2019-10-03
      • 2019-02-08
      • 2017-07-19
      • 2014-07-06
      相关资源
      最近更新 更多