excel-根据字体和背景颜色在单元格中放置值

时间:2014-09-25 14:55:46

标签: excel excel-vba vba

我有一个电子表格 - 在其中一个标签上我有一个填充了名称的表格,它们与一组颜色编码的参数相关,并且它们具有不同的背景颜色。 我需要创建一个公式来改变那些" X"基于颜色到简单文本(例如 - 如果单元格有绿色背景和黑色" X",比我想称之为GB,如果单元格有黄色背景和蓝色" X" - YB等。)

请有人帮助我这个吗?

非常感谢。


更新

我在这里找到了很多很好的参考,但我没有做对。我创建了两个名称范围 - 例如:

CellColor=GET.CELL(63,OFFSET(INDIRECT("RC",FALSE),0,-1))

FontColor=GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1))

我已经计算出字体和背景颜色的数字。但是当我放置配方时 - 它没有给我正确的价值观:

=IF(AND(FontColor=3,I18="X"),"EXR",(IF(AND(FontColor=23,I18="X"),"BU",(IF(AND(Fo‌ntColor=0,I18="X"),"EPL",0)))))

如果我将公式放在单元格左侧的列中 - 它可以工作,如果在另一个标签上 - 它没有 - :(

1 个答案:

答案 0 :(得分:1)

在VBA中:

Sub SetValueBasedOnColors()
Dim c As Range
For Each c In Range("A2:A10")
    If c.Interior.Color = RGB(196, 215, 155) And c.Font.Color = RGB(0, 0, 0) Then
        c.Value = "GB"
    ElseIf c.Interior.Color = RGB(255, 255, 0) And c.Font.Color = RGB(31, 73, 125) Then
        c.Value = "YB"
    End If
Next c
End Sub

结果:

Results

您可以通过右键单击单元格并选择:

来获取内部颜色

Format Cells...->More Colors...->Custom (Tab)

Colors2

Colors3

如果有很多颜色可供使用,您可以设置一个"颜色表"保持代码简单,使您不必查找每种颜色。

只需将带有颜色和X的单元格复制到一个范围内,然后输入您想要的单元格。确保将下面的ColorTable范围更改为表格的正确范围。

Sub SetValueBasedOnColors()
Dim ColorTable As Range
Set ColorTable = Range("D2:D3") 'Point this range to your color table
Dim c As Range
Dim z As Range
For Each c In Range("A2:A10") 'Point this range to your data
    For Each z In ColorTable
        If c.Interior.Color = z.Interior.Color And c.Font.Color = z.Font.Color Then
            c.Value = z.Value
        End If
    Next z
Next c
End Sub

Colors4

结果:

Colors5