Подтвердить что ты не робот

Установить цвет фона ячейки в значение RGB данных в ячейке

У меня есть столбец, содержащий значения RGB, например:

127,187,199
67,22,94

В Excel, есть ли способ использовать это, чтобы установить цвет фона ячейки?

4b9b3361

Ответ 1

Вы можете использовать VBA - что-то вроде

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

Просто введите значение ячейки.

Ответ 2

Настройка свойства Color гарантирует точное совпадение. Excel 2003 может обрабатывать только 56 цветов одновременно. Хорошей новостью является то, что вы можете назначить любое значение rgb вообще этим 56 слотам (которые называются ColorIndexs). Когда вы устанавливаете цвет ячейки с помощью свойства Color, это заставляет Excel использовать ближайший "ColorIndex". Пример. Установка ячейки в RGB 10,20,50 (или 3281930) фактически приведет к ее установке в индекс цвета 56, который составляет 51,51,51 (или 3355443).

Если вы хотите быть уверенным, что получили точное соответствие, вам нужно изменить ColorIndex на значение RGB, которое вы хотите, а затем изменить Cell ColorIndex на указанное значение. Однако вы должны знать, что, изменяя значение цветового индекса, вы меняете цвет всех ячеек, уже использующих этот цвет в рабочей книге. Например, Red - это ColorIndex 3. Итак, любая ячейка, которую вы сделали Red, вы на самом деле сделали ColorIndex 3. И если вы переопределите ColorIndex 3, чтобы сказать, фиолетовый, то ваша ячейка действительно будет фиолетовой, но все остальные эритроциты в рабочая книга также будет изменена на фиолетовый.

Существует несколько стратегий борьбы с этим. Один из способов - выбрать индекс, который еще не используется, или только тот, который, по вашему мнению, вряд ли будет использоваться. Другой способ - изменить значение RGB ближайшего ColorIndex, чтобы ваше изменение было тонким. Код, который я опубликовал ниже, использует этот подход. Воспользовавшись знаниями о назначении ближайшего 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

Ответ 3

Ячейки не могут быть изменены из функции 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, взятого из ячеек A2 в C2. Цвет шрифта контрастный белый или черный.

Ответ 4

Чтобы покрасить каждую ячейку на основе ее текущего целочисленного значения, должно работать следующее, если у вас последняя версия Excel. (Старые версии также не поддерживают rgb)

Sub Colourise()
'
' Colourise Macro
'
' Colours all selected cells, based on their current integer rgb value
' For e.g. (it 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().

Ответ 5

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

Предполагая, что есть 3 столбца R, G и B (в этом порядке). Выберите первый столбец, т.е. R. нажмите Alt + F11 и запустите приведенный выше код. Мы должны выбрать первый столбец (содержащий R или красные значения) и запускать код каждый раз, когда мы меняем значения, чтобы отразить изменения.

Я надеюсь, что этот более простой код поможет!