【问题标题】:I have an Excel sheet that has 3 columns A B C columns and I want the D column to be the color of RGB(A,B,C)我有一个 Excel 表,它有 3 列 A B C 列,我希望 D 列是 RGB(A,B,C) 的颜色
【发布时间】:2020-04-18 01:33:54
【问题描述】:

我正在使用 Excel 2019/365 32 位。

我有一张多行 3 列的工作表 A 列是红色分量(0 - 255 的整数) B 列是绿色分量(0 - 255 的整数) C 列是蓝色分量(0 - 255 的整数) 颜色公式 RGB(A,B,C) 我希望 D 列是该行的 RGB(A,B,C) 产生的颜色 如何为 D 列分配颜色?

RBG(A,B,C) A, B, C 可以是 0 到 255 之间的任何整数,例如 RGB(255,0,0) = 颜色红色,黄色是 RGB(255.255,0),绿色= RGB(0,255,0),蓝色 = RGB(0,0,255)

条件格式是不可能的,因为可能的颜色组合超过 500 种可能的颜色。所以我需要一个函数或 VBA 代码来用响应 RGB() 的颜色填充 D。

An example of what I want where the colors you see are calculated not conditional formatting

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    很遗憾,您没有透露您询问的代码的逻辑目的。因此我发明了一个。如果它不适合您的需求,您可以根据您的需求调整代码的功能。首先,尝试一下。

    在空白工作表的代码模块中安装以下代码。代码位于该特定模块中很重要。它在 VB 编辑器的项目资源管理器中通过其名称进行标识。

    Private Sub Worksheet_Change(ByVal Target As Range)
    
        ' identify the columns containing R, B & G
        Const TriggerAddress As String = "A:C"
    
        Dim Rng As Range
        Dim Arr As Variant
    
        If Not Application.Intersect(Target, Range(TriggerAddress)) Is Nothing Then
            With Target
                ' ignore changes by Paste action
                If .Cells.CountLarge = 1 Then
                    Set Rng = Range(TriggerAddress).Rows(.Row)
                    ' require 3 numbers
                    If Application.Count(Rng) = 3 Then
                        Arr = Rng.Value
                        Cells(.Row, Rng.Cells.Count + 1).Interior.Color = _
                        RGB(Arr(1, 1), Arr(1, 2), Arr(1, 3))
                    End If
                End If
            End With
        End If
    End Sub
    

    过程顶部的常量标识了您拥有数字的列。您要求 A:C,现在就是这样,但将来可以更改。请注意,根据您的要求,输出将位于水平相邻的单元格中,但也可以更改。

    TriggerColumns 中的任何单元格发生更改时,代码都会做出反应。如果所有 3 个单元格都包含数字,则输出单元格的填充颜色将被更改。在这种情况下,0(零)并不是一个“数字”。修改 3 个现有数字中的任何一个,颜色将再次重置。

    【讨论】:

      【解决方案2】:

      实际答案是:

      For x = StartRowNumber To EndRowNumber
          Cells(x, 4).Interior.Color = RGB(Cells(x, 1), Cells(x, 2), Cells(x, 3))
      Next
      

      【讨论】:

        【解决方案3】:

        使用条件格式的方式

        单元格颜色规则出现在A列、B列和C列:

        • 红色:仅 A 列
        • 绿色:仅 B 列,A 列 + B 列
        • 蓝色:仅 C 列,A 列 + C 列,B 列 + C 列, A列+B列+C列

        那么,

        在 D 列中,选择 D1:D7 >> 条件格式 >> 新规则 >>

        1. 规则1公式:=LOOKUP(2,1/($A1:$C1<>""),ROW($A$1:$A$3))=1 >> 格式>>“Red”背景颜色>>确定
        2. 规则2公式:=LOOKUP(2,1/($A1:$C1<>""),ROW($A$1:$A$3))=2 >> 格式>>“Green”背景颜色>>确定
        3. 规则 3 公式:=LOOKUP(2,1/($A1:$C1<>""),ROW($A$1:$A$3))=3 >> 格式>>“Blue”背景颜色>>确定

        4. 完成

        D 列彩色单元格结果:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-23
          • 2020-07-15
          • 1970-01-01
          相关资源
          最近更新 更多