2009-09-15 8 views
24

데이터의 RGB 값으로 셀의 집합 배경색 I Excel에서엑셀 : 셀

127,187,199 
67,22,94 

은 배경색을 설정할 I이 사용할 수있는 방법이 예를 들어 RGB 값을 포함하는 열을 가지고 세포?

답변

45

당신은 VBA를 사용할 수 있습니다 -

Range("A1:A6").Interior.Color = RGB(127,187,199) 

같은 것을 그냥 셀 값 전달합니다.

17

Color 속성을 단독으로 설정하면 정확한 일치가 보장됩니다. Excel 2003에서는 한 번에 56 가지 색상 만 처리 할 수 ​​있습니다. 좋은 소식은 56 개의 슬롯 (ColorIndex라고 함)에 rgb 값을 할당 할 수 있다는 것입니다. Color 속성을 사용하여 셀의 색을 설정하면 Excel에서 가장 가까운 "ColorIndex"를 사용합니다. 예 : 셀을 RGB 10,20,50 (또는 3281930)으로 설정하면 실제로 51,51,51 (또는 3355443) 인 색상 색인 56으로 설정됩니다.

정확하게 일치하는지 확인하려면 ColorIndex를 원하는 RGB 값으로 변경 한 다음 셀의 ColorIndex를 상기 값으로 변경해야합니다. 그러나 색상 색인의 값을 변경하면 세포의 모든 색상이 이미 통합 문서 내에서 해당 색상을 사용하고 있음을 알 수 있습니다. 예를 들어, Red는 ColorIndex 3입니다. 그래서 Red를 만들었던 모든 셀은 실제로 ColorIndex 3을 만들었습니다. 그리고 ColorIndex 3을 보라색으로 재정의하면 셀은 실제로 보라색이 될 것입니다.하지만 다른 모든 통합 문서도 자주색으로 바뀝니다.

이 문제를 해결할 수있는 전략이 몇 가지 있습니다. 한 가지 방법은 아직 사용되지 않는 색인을 선택하거나 사용하지 않을 것으로 생각되는 색인을 선택하는 것입니다. 또 다른 방법은 가장 가까운 ColorIndex의 의 RGB 값을 변경하여 변경 사항을 미묘하게 변경하는 것입니다. 아래에 게시 한 코드는이 방법을 사용합니다. 가장 가까운 ColorIndex가 할당된다는 지식을 이용하여 RGB 값을 셀에 직접 할당하여 (가장 가까운 색을 산출 함) RGB 값을 해당 인덱스에 할당합니다.

Sub Example() 
    Dim lngColor As Long 
    lngColor = RGB(10, 20, 50) 
    With Range("A1").Interior 
     .Color = lngColor 
     ActiveWorkbook.Colors(.ColorIndex) = lngColor 
    End With 
End Sub 
+0

감사합니다. 또한 매우 유용합니다. –

1

워크 시트 수식으로 사용되는 VBA 함수 내에서 셀을 변경할 수 없습니다.

=HYPERLINK(SetRGB(D2;A2;B2;C2);"HOVER!") 

당신이 가져가되면 :

Function SetRGB(x As Range, R As Byte, G As Byte, B As Byte) 
    On Error Resume Next 
    x.Interior.Color = RGB(R, G, B) 
    x.Font.Color = IIf(0.299 * R + 0.587 * G + 0.114 * B < 128, vbWhite, vbBlack) 
End Function 

그런 다음 세포 D2에서 예를 들어, 시트에이 수식을 사용 :이 해결 방법을 통해 제외 ...

은 새 모듈에이 기능을 넣어 셀 위로 마우스를 가져 가면 배경색이 A2에서 C2까지의 RGB에서 배경색으로 업데이트됩니다. 글꼴 색상은 흰색 또는 검은 색으로 대조됩니다.

0

최신 버전의 Excel이있는 경우 현재 셀의 정수 값을 기반으로 각 셀의 색을 지정하려면 다음을 수행해야합니다.) 만약 대신 당신이 다음 (세 개의 숫자로 문자열을 분할 RGB를 사용하여 결합 할 수있는 문자열이 다수의

Sub Colourise() 
' 
' Colourise Macro 
' 
' Colours all selected cells, based on their current integer rgb value 
' For e.g. (it's a bit backward from what you might expect) 
' 255 = #ff0000 = red 
' 256*255 = #00ff00 = green 
' 256*256*255 #0000ff = blue 
' 255 + 256*256*255 #ff00ff = magenta 
' and so on... 
' 
' Keyboard Shortcut: Ctrl+Shift+C (or whatever you want to set it to) 
' 
    For Each cell In Selection 
    If WorksheetFunction.IsNumber(cell) Then 
     cell.Interior.Color = cell.Value 
    End If 
    Next cell 
End Sub 

를 (이전 버전의 RGB도 처리하지 않음).