Excel代码链接范围单元格'颜色变成另一种

时间:2017-08-08 12:00:04

标签: excel excel-vba colors formatting conditional vba

我正在构建一个住宅堆叠计划,其中每个单元格=具有条件格式的特定颜色的单元类型。 每个单元的2个表格如下所示,反映了平方米的大小和$值。

我需要反映细胞'颜色见下表。

我需要一个动态的解决方案,并且更愿意避免使用vba(因为我并不精通),但如果需要,我会使用它。提前谢谢!

Find Image HERE

3 个答案:

答案 0 :(得分:1)

如果您将颜色代码值(B21:B26)从2 rooms更改为2(以匹配您的第二个表格),则应遵循以下规则。基本上,此代码不使用条件格式化。从条件格式中获取颜色可能有点费力和棘手(谷歌" excel vba找到颜色条件格式")。相反,当前代码读取颜色代码单元格中的颜色,并将其应用于其他两个范围。

Private Sub BckgndColor()
    Dim ColorCodeRange As Range
    Dim NoOfRooms As Range
    Dim CellColorIndex As Integer
    Dim c As Range
    Dim d As Object

    Set ColorCodeRange = Worksheets("Sheet1").Range("B21:B26")
    Set d = CreateObject("scripting.dictionary")
    'Add the pairs (value, color) to dictionary
    For Each c In ColorCodeRange.Cells
        d.Add c.Value, c.Interior.ColorIndex
    Next

    Set NoOfRooms = Worksheets("Sheet1").Range("M25:V36") 'Here the range of Table 2 (M25:V36 in your example)
    'Scan range, and assign color
    For Each c In NoOfRooms.Cells
        If d.Exists(c.Value) Then
            c.Interior.ColorIndex = d(c.Value)
            c.Offset(16, 0).Interior.ColorIndex = d(c.Value) 'If Table 3 is always 16 rows down, this shoud work
        End If
    Next

    Set d = Nothing
End Sub

答案 1 :(得分:1)

在第一个表上正常设置条件格式,如下所示:

Conditional formatting

注意我的表格从C4开始,但是你的表位于不同的地方,应该相应调整。确保您在规则中的公式上没有$符号,但是您确实在“适用于”部分中有了这个符号

现在将此格式复制并粘贴到第二个表格上。

最后在条件格式中编辑公式,使它们指向FIRST表的起始单元格。它应该是这样的:

2nd Table Conditional formatting

请注意,格式'适用于'第二个表,但在公式中引用第一个表中的值。

结果如下:

Final result

如果需要,您可以对其他表重复此操作。

当您在Excel 2003(!)中工作时,请按照以下步骤操作:

  1. 选择第二个表格中的单元格。
  2. 在菜单中,选择格式 - 条件格式。
  3. 在“条件格式”框中,选择公式
  4. 在文本框中,输入FIRST表的单元格引用(例如C4 =“4+”),不要输入任何$符号。
  5. 单击“格式”按钮,然后选择背景填充以匹配第一个表中的背景。
  6. 点击添加>>以相同方式添加其他条件按钮。

答案 2 :(得分:0)

我在表 2 中给出了选项数据验证列表,当我按列表选择选项时,单元格会改变。对于那个单元格,我也想从 sheet1 到 sheet2 的源表中获取颜色。