programing

셀의 배경색을 셀 내 데이터의 RGB 값으로 설정

javamemo 2023. 5. 20. 00:24
반응형

셀의 배경색을 셀 내 데이터의 RGB 값으로 설정

다음과 같은 RGB 값이 들어 있는 열이 있습니다.

127,187,199
67,22,94

엑셀에서 이것을 사용하여 셀의 배경색을 설정할 수 있는 방법이 있습니까?

당신은 VBA를 사용할 수 있습니다 - 비슷한 것.

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

셀 값만 전달합니다.

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

정확히 일치하는지 확인하려면 색상 색인을 원하는 RGB 값으로 변경한 다음 셀의 색상 색인을 해당 값으로 변경해야 합니다.그러나 색 인덱스 값을 변경하면 워크북에서 이미 해당 색을 사용하는 모든 셀의 을 변경할 수 있습니다.예를 들어, 빨간색은 색상 색인 3입니다.빨간색을 만든 셀은 실제로 색지수 3을 만들었습니다.그리고 만약 여러분이 ColorIndex 3을 보라색으로 재정의한다면, 여러분의 세포는 실제로 보라색이 될 것입니다. 그러나 워크북에 있는 다른 모든 빨간색 세포도 보라색으로 바뀔 것입니다.

이 문제를 해결하기 위한 몇 가지 전략이 있습니다.한 가지 방법은 아직 사용 중이지 않은 인덱스를 선택하거나 사용되지 않을 것으로 생각되는 인덱스만 선택하는 것입니다.또 다른 방법은 가장 가까운 색지수의 RGB 값을 변경하여 변경 사항이 미묘하게 적용되도록 하는 것입니다.제가 아래에 올린 코드는 이 접근 방식을 취합니다.가장 가까운 색 인덱스가 할당된 지식을 활용하여 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

워크시트 공식으로 사용되는 VBA 함수 내에서는 셀을 변경할 수 없습니다.이 해결 방법을 제외하고는...

이 기능을 새 모듈에 삽입합니다.

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:

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

마우스를 셀 위에 놓으면(해 보십시오!) 배경색이 셀에서 가져온 RGB로 업데이트됩니다.A2C2글꼴 색은 흰색 또는 검은색과 대비됩니다.

Sub AddColor()
    For Each cell In Selection
        R = Round(cell.Value)
        G = Round(cell.Offset(0, 1).Value)
        B = Round(cell.Offset(0, 2).Value)
        Cells(cell.Row, 1).Resize(1, 4).Interior.Color = RGB(R, G, B)
    Next cell
End Sub

R, G, B 열이 세 개라고 가정합니다(이 순서대로).첫 번째 컬럼을 선택합니다. R. alt+F11을 누르고 위의 코드를 실행합니다.첫 번째 열(R 또는 빨간색 값 포함)을 선택하고 값을 변경할 때마다 코드를 실행하여 변경 사항을 반영해야 합니다.

이 간단한 코드가 도움이 되었으면 좋겠습니다!

현재 정수 값을 기준으로 각 셀에 색을 입히려면 최신 버전의 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()를 사용하여 결합할 수 있습니다.

언급URL : https://stackoverflow.com/questions/1426369/set-background-colour-of-cell-to-rgb-value-of-data-in-cell

반응형