Нил много использует цвета в своих таблицах. Он знает, что может генерировать цвет на основе числового значения RGB (и как объясняется в других вопросах ExcelTips). Нил хотел бы сделать обратное — определить значение RGB. Он задается вопросом, есть ли способ вернуть (через функцию или макрос)

значение RGB цвета, используемого для заполнения ячейки.

В Excel нет функции для этого, но вы можете создать свою собственную пользовательскую функцию. Используемая функция зависит от того, что вы хотите вернуть на рабочий лист. Например, если вы хотите вернуть традиционный шестизначный шестнадцатеричный код для цветов RGB, вы должны использовать следующий очень простой макрос:

Function getRGB1(rcell) As String     Dim sColor As String

sColor = Right("000000" & Hex(rcell.Interior.Color), 6)

getRGB1 = Right(sColor, 2) & Mid(sColor, 3, 2) & Left(sColor, 2)

End Function

Этот макрос проверяет внутренний цвет для любой ячейки, на которую вы ссылаетесь, помещает шестнадцатеричные значения цвета в правильном порядке и возвращает строку в Excel. Чтобы использовать функцию, вы просто вызываете ее на своем листе со ссылкой на ячейку следующим образом:

=getRGB1(B4)

Однако вы можете не захотеть использовать традиционные шестнадцатеричные коды для цветов RGB.

Если вы хотите получить десятичные значения для каждого из цветов, следующий макрос возвращает это:

Function getRGB2(rcell) As String     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256     getRGB2 = "R=" & R & ", G=" & G & ", B=" & B End Function

Эта версия, вызываемая так же, как макрос getRGB1, возвращает строку типа «R = 255, G = 204, B = 0». Вы также можете изменить макрос еще больше, чтобы он возвращал одно значение на основе установленного вами параметра:

Function getRGB3(rcell As Range, Optional opt As Integer) As Long     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256

If opt = 1 Then         getRGB3 = R     ElseIf opt = 2 Then         getRGB3 = G     ElseIf opt = 3 Then         getRGB3 = B     Else         getRGB3 = C     End If End Function

Чтобы использовать макрос, просто добавьте второй параметр к функции, используемой в вашем листе, указав, что вы хотите:

=getRGB3(B4,1)

Если второй параметр равен 1, функция возвращает только красное значение. Если вы укажете второй параметр, равный 2, то возвращается зеленое значение, а 3 возвращает синее значение. Любое другое значение для второго параметра (или если вы его полностью опустите) возвращает полное десятичное значение внутреннего цвета.

Если вы не хотите идти по пути создания макроса или хотите определять цвета не только на листе Excel, вы можете рассмотреть возможность использования сторонней утилиты. Интересно выглядит Instant Eyedropper, который предоставляется бесплатно. Вы можете найти больше информации об этом здесь:

http://instant-eyedropper.com

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (10179) применим к Microsoft Excel 97, 2000, 2002 и 2003.

Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Determining_the_RGB_Value_of_a_Color [Определение значения RGB для цвета].