We help IT Professionals succeed at work.

# Determining Excel color from RGB and vice versa

on
Hello,

This is a follow-up question to a previous thread located here:

Auto-fill a cell's color based on numeric RGB values and vice versa in Excel

In that thread, the solution (by Ejgil Hedegaard) includes an attached Excel file in which the fill color of a particular cell, automatically changes in response to entering various values in three other cells labeled R (red), G (green), & B (blue).

This functionality is tremendously useful for me (and I suspect will be for others) because it enables you to instantly view the new color resulting from changes in any of the RGB parameters (ie without the necessity of the four clicks typically required to obtain that information):

Home > Fill Color > More Colors > Custom

(The file also includes a chart for quickly converting from RGB decimal to RGB hex and vice versa.)

Additionally, the solution to the thread contains the formula for calculating Excel's color code:

ExcelColor = R + G *256 + B *256^2

For example:

Red = 204
Green = 102
Blue = 255

is calculated as follows:

ExcelColor = 204 + (102*256) + (255*256^2)
ExcelColor = 16737996

It also displays the following for reversing the process (ie :

R = C Mod 256
G = C \ 256 Mod 256
B = C \ 256^2 Mod 256

Are these three formulas math or code and what is the purpose of the backslash?

It seems that to reverse the process, the =FLOOR() function should be used to first determine Blue, then Green and then Red as follows:

ExcelColor = 16737996

ExcelBlue = FLOOR(ExcelColor,256^2)
ExcelBlue = 16711680

Blue = 16711680 / 256^2
Blue = 255

Remainder = 16737996 – 16711680
Remainder = 26316

ExcelGreen = FLOOR(26316,256)
ExcelGreen = 26112

Green = 26112 / 256
Green = 102

Remainder = 26316 – 26112
Remainder = 204

Red = 204

How are these steps and the three equations/lines of code from the previous solution the same — assuming they are?

Thanks
Comment
Watch Question

## View Solution Only

Commented:
The backslash means integer division, and can only be used in VBA.
Your calculation is correct, but can be simpler.
The similar formulas in Excel are
R=MOD(ColorCode,256)
G=MOD(INTColorCode/256),256)
B=MOD(INT(ColorCode/256^2),256)

Commented:
Thanks again Ejgil.