从特定的背景获得价值

我在“A”列中有一个带有背景色的列表,在它们的ceil中的值是颜色的名称。 我想这样做,当我select一个背景颜色的单元格时,这将改变“C1”值的值为“A”列中的值。
(这不是我真实的颜色名称,我为每种颜色都有一个特定的名称。)像vlookup,但与背景颜色和在同一个ceil。
例如: 在这里输入图像说明

谢谢!

把它放在工作表的代码部分:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Target If dictColours.Exists(.Interior.ColorIndex) Then Sheets("Sheet1").Range("C1").Value = dictColours(.Interior.ColorIndex) End If End With End Sub 

并将其添加到新的模块,replace表参考:

 Public dictColours As Scripting.Dictionary Sub test() Set dictColours = New Scripting.Dictionary Dim rngTarget As Range Set rngTarget = Sheets("Sheet1").Range("A1") Do While rngTarget.Value <> "" dictColours.Add rngTarget.Interior.ColorIndex, rngTarget.Value Set rngTarget = rngTarget.Offset(1, 0) Loop End Sub 

想想使用条件格式。

阐述了非常好的解决scheme表单我会build议下面的替代代码完全放在相关工作表的代码部分

 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim dictColours As Scripting.Dictionary Set dictColours = GetDictColours(Target.Parent) With Target If dictColours.Exists(.Interior.ColorIndex) Then .Parent.Range("C1").Value = dictColours(.Interior.ColorIndex) End If End With End Sub Function GetDictColours(sht As Worksheet) As Scripting.Dictionary Dim i As Long Set GetDictColours = New Scripting.Dictionary Do While sht.Range("A1").Offset(i) <> "" GetDictColours.Add sht.Range("A1").Offset(i).Interior.ColorIndex, sht.Range("A1").Offset(i).Value i = i + 1 Loop End Function 

除了一些文体select(每个人都有他自己的最爱)之外,OP应该更加简单,他(他自己说)是一个全面的VBA初学者!