Выберите цвет фона ячейки к значению RGB данных в ячейке

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

127,187,199
67,22,94

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

28
задан Community 17 July 2019 в 17:36
поделиться

2 ответа

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

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

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

50
ответ дан 28 November 2019 в 02:42
поделиться

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

Если вы хотите быть уверены, что получили точное совпадение, вам нужно изменить ColorIndex на желаемое значение RGB, а затем изменить ColorIndex ячейки на указанное значение. Однако вы должны знать, что, изменяя значение индекса цвета, вы изменяете цвет всех ячеек, уже использующих этот цвет в книге. Чтобы привести пример, Красный - это ColorIndex 3. Итак, любая ячейка, которую вы сделали красным, вы фактически сделали 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
18
ответ дан 28 November 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: