【问题标题】:Put value in cell based on font and backgroud color根据字体和背景颜色在单元格中输入值
【发布时间】:2014-11-20 09:53:56
【问题描述】:

我有一个电子表格 - 在其中一个选项卡上我有一个填满名称的表格,它们与一组颜色编码的参数相关,并且它们具有不同的背景颜色。

我需要创建一个公式来将那些基于颜色的“X”更改为简单的文本(例如,如果一个单元格有绿色背景和黑色“X”,而不是我想称之为 GB,如果单元格有黄色背景和蓝色“X”-YB等)


更新:

我创建了两个名称范围:

单元格颜色:=GET.CELL(63,OFFSET(INDIRECT("RC",FALSE),0,-1))

字体颜色:=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)))))

如果我将公式放在单元格左侧的列中,它会起作用,如果放在另一个选项卡上,它不会。

【问题讨论】:

  • 你试过自己做吗?通常,此站点上的人员不会为您编写整个程序/脚本 - 当您遇到特定问题时,我们会随时为您提供帮助。
  • 我有.. 我在这里找到了很多很好的参考资料,但我没有做对。我创建了 2 个名称范围 - 例如 CellColor=GET.CELL(63,OFFSET(INDIRECT("RC",FALSE),0,-1)) 和 FontColor=GET.CELL(24,OFFSET(INDIRECT("RC" ,假),0,-1))。我已经计算了字体和背景颜色的数字。但是当我放置公式时 - 它没有给我正确的值: =IF(AND(FontColor=3,I18="X"),"EXR",(IF(AND(FontColor=23,I18="X") ,"BU",(IF(AND(FontColor=0,I18="X"),"EPL",0)))))。如果我将公式放在左侧的列中 - 它可以工作,如果在另一个选项卡上 - 它不会
  • 颜色是如何设置的,是条件格式还是普通的旧填充?
  • 纯旧填充:(
  • OFFSET(INDIRECT("RC",FALSE),0,-1) 获取公式所在单元格的左侧单元格。因此,您的姓名将获取单元格的单元格信息公式中使用它们的单元格左侧的单元格。

标签: excel vba excel-4.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

结果:

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

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

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

只需将带有颜色和 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

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2014-09-30
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多