使用VBA对Excel中的单元格按色阶赋颜色

Excel中对单元格赋值,可以通过Cells(row, column).Interior.Color这个属性赋值。但这是一个十进制数,范围是0-16777215. 属于long长整形。

通常对颜色赋值都是使用RGB色值,就是6个十六位数字如#EEEEEE,但Interior.Color是十进制,所以用起来很奇怪。这段时间用到了,我也大致研究了一下。

通常RGB的顺序是红绿蓝,对应的十六进制分别是FF0000;00FF00;0000FF。Excel是把这个6个数字转换成了十进制,对应的十进制是:16711680;65280;255。但试一下发现这三个颜色是的顺序是反过来的。所以RGB的十六进制应该是BGR,即的开始两位是蓝色,中间是绿色,最后是红色,合并之后再转成十进制就对了。最后对Cells(row, column).Interior.Color赋值就可以了。

赋色的问题解决了,下一步就是色阶。通过程序给单元格赋色,可以根据单元格的值的大小,使用色阶,值越大颜色越深。以由黑到白的色阶为例,其他颜色同理,函数如下:

Function GetMaxValue(nRows, nColumns) As Double
    Set Rng = Range(Cells(1, 1), Cells(nRows, nColumns))
    GetMaxValue = Application.WorksheetFunction.Max(Rng)
End Function


Function GetColor(nvalue As Double, nmax As Double)
    Dim a As Double
    a = (nvalue) ^ (1 / 2) * Int(255 / (nmax) ^ (1 / 2))
        
    GetColor = Application.WorksheetFunction.Hex2Dec(Hex(a) & Hex(a) & Hex(a))
End Function

先需要获取区间的最大值,然后将单元格中的值,按比例压缩到0-255之间,以压缩后的值按RGB的组成拼凑为色阶。使用方法如下:

'获取最大值
max = GetMaxValue(nRows, nColumns)

'对单元格的循环 
For i,j
Cells(i, j).Interior.Color = GetColor(Cells(i, j), max)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VBA Excel,可以使用Range对象的Value属性来获取单元格的值。例如,要获取A1单元格的值,可以使用以下代码: ```vba Dim cellValue As Variant cellValue = Range("A1").Value ``` 在这个例子,将A1单元格的值存储在变量cellValue。你可以根据需要将其用于其他操作或输出。 引用\[3\]提到,单元格对象的Value属性为单元格实际存储的值。当单元格存有公式时,Value属性为公式运行后的结果值。因此,如果A1单元格包含公式,那么获取的值将是公式运行后的结果。 请注意,这只是获取单个单元格的值的方法。如果你需要获取多个单元格的值,可以使用循环结构来遍历单元格范围并逐个获取值,就像引用\[1\]和引用\[2\]的示例代码一样。 #### 引用[.reference_title] - *1* *2* [excelVBA获取指定单元格内容](https://blog.csdn.net/u010719791/article/details/121526472)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Excel 2010 VBA 入门 026 读取单元格的值和显示的值](https://blog.csdn.net/ngbshzhn/article/details/115398153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值