Excel:获取单元格填充色的RGB值

这段代码使用VBA在Excel中创建一个字典来存储单元格颜色与RGB值的映射,并将相同颜色的单元格映射到同一数值。它遍历指定范围内的每个单元格,提取其RGB值并将其转换为字符串,然后检查该字符串是否已存在于字典中。如果不存在,就将新的RGB值和映射编号添加到字典和数组中;如果存在,则直接使用字典中的编号。最后,将处理后的数组写回原范围,并在另一个工作表中展示所有不重复的RGB值及其对应的编号。
摘要由CSDN通过智能技术生成


Private Sub CommandButton1_Click()

    Set Dic = CreateObject("Scripting.Dictionary")
    Arr = Sheets("0").Range("A1:K58")--这里是获取单元格的范围和sheet的名称
    N = 1
    For H = 1 To 58-- 这里是行数
        For l = 1 To 11--这里是列数
            cV = Cells(H, l).Interior.Color
            R = cV \ 256 ^ 0 Mod 256
            G = cV \ 256 ^ 1 Mod 256
            B = cV \ 256 ^ 2 Mod 256
            YS = cV & "," & R & "," & G & "," & B
            If Not Dic.exists(YS) Then
                Arr(H, l) = N
                Dic(YS) = N
                N = N + 1
            Else
                Arr(H, l) = Dic(YS)
            End If
        Next
    Next
    Range("A1:K58") = Arr--这里需要处理的区域
    Brr = Dic.keys
    With Sheets("1")--这里是放RGB值的sheet名称
        .Range("A1:K58").Clear--这是放RGB值的区域
        For i = 0 To UBound(Brr)
            .Cells(i + 2, 1).Interior.Color = Split(Brr(i), ",")(0)
            .Cells(i + 2, 2).Resize(, 4) = Array(Split(Brr(i), ",")(1), Split(Brr(i), ",")(2), Split(Brr(i), ",")(3), i + 1)
        Next
    End With

End Sub

新增一个Active控件

点击查看代码

复制进去就行

范围变化的时候,改一下注释里的相关值就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值