Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, and 2013. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Determining the RGB Value of a Color.

Determining the RGB Value of a Color

by Allen Wyatt
(last updated March 19, 2016)


Neil uses colors a lot in his worksheets. He knows that he can generate a color based upon a numeric RGB value (and as explained in other ExcelTips issues). Neil would like to do the opposite—determine an RGB value. He wonders if there is a way to return (via function or macro) the RGB value of the color used to fill a cell. (Neil wants the actual color applied to the cell, not any "override" color, such as one imposed by a conditional format.)

Excel doesn't include a function to do this, but if you only need to check out the RGB values for a single cell, the easiest way is to follow these steps:

  1. Select the cell that is formatted with the color you want to check.
  2. Display the Home tab of the ribbon.
  3. Click the down-arrow at the right side of the Fill Color tool, in the Font group. Excel displays a small palette of colors and some other options.
  4. Choose More Colors. Excel displays the Colors dialog box.
  5. Make sure the Custom tab is displayed. (See Figure 1.)
  6. Figure 1. The Custom tab of the Colors dialog box.

  7. At the bottom of the dialog box you can see the individual values for the red, green, and blue components of the color in the cell.
  8. Click OK when done.

If you have a need to get the values more often, then creating your own user-defined function is the way to go. The function you use depends on what you want to actually have returned to your worksheet. For instance, if you want to have the traditional six-character hex code for RGB colors returned, you would use the following very simple macro:

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

This macro looks at the interior color for any cell you reference, puts the hex values for the color in the right order, and returns the string to Excel. To use the function you simply invoke it, in your worksheet, with a cell referenced in this manner:


You may not want the traditional hex codes for the RGB colors, however. If you want to get the decimal values for each of the colors, then the following macro returns that:

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

Invoked the same way as the getRGB1 macro, this version returns a string such as "R=255, G=204, B=0". You can also modify the macro even further so that it returns a single value, based upon a parameter you set:

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
        getRGB3 = C
    End If
End Function

To use the macro, simply add a second parameter to the function used in your worksheet, specifying what you want:


If the second parameter is 1, then the function returns just the red value. If you specify a second parameter of 2, then the green value is returned, and 3 returns the blue value. Any other value for the second parameter (or if you omit it entirely) returns the full decimal value of the interior color.

If you don't want to go the route of creating a macro, or if you want to determine colors in more than just your Excel worksheet, you might consider a third-party utility. One that looks interesting is Instant Eyedropper, which is free. You can find more information about it here:

This utility works with versions of Windows up through Windows 10. You may be able to search the Internet and find similar utilities from other companies.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (10180) applies to Microsoft Excel 2007, 2010, and 2013. You can find a version of this tip for the older menu interface of Excel here: Determining the RGB Value of a Color.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He  is president of Sharon Parq Associates, a computer and publishing services company. ...


Resizing Your Table

Need to make your table a different size? It's easy to do, using the same general technique you use when resizing a graphic. ...

Discover More

Getting Rid of Workbook Links

Excel allows you to easily link information from one workbook to another. If you want to get rid of links that may be within ...

Discover More

Determining Picture Size in a Macro

When processing a document using a macro, you may need for your macro to figure out the sizes of the images in your document. ...

Discover More

Excel Smarts for Beginners! Featuring the friendly and trusted For Dummies style, this popular guide shows beginners how to get up and running with Excel while also helping more experienced users get comfortable with the newest features. Check out Excel 2013 For Dummies today!


Getting User Input in a Dialog Box

Want to get some input from the users of your workbooks? You can do it by using the InputBox function in a macro.

Discover More

Digital Signatures for Macros

The security features built into Excel allow you to digitally sign your macros so that users can rest assured that they ...

Discover More

Tools on Developer Tab are Unavailable

Want to add some macros to your workbook? What do you do if you try to add the macros but the program has disabled the tools?

Discover More

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments for this tip:

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] in your comment text. You’ll be prompted to upload your image when you submit the comment. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is three minus 0?

2017-01-28 04:59:21


Thanks - really useful to me.

2016-11-09 18:36:41

Gusti NS

Thanks so much, getRGB1 was very very helpful.


2016-10-14 07:01:12

Ibukunoluwa Aina

Thanks so much for the tip. It was very helpful.

2016-04-26 08:10:46


Thank you, getRGB2 has been really useful to me.

Thanks a lot.

2015-02-03 02:21:10


Hi, thank you for the getRGB1 function. It's exactly what I was looking for. First I a similar function on another site but it did not return the correct value. Your function, however, works perfectly :-)
Thank again. Frederick

2014-11-13 10:42:55

Bigger Don

@ Willy

You are absolutely right, but hard-coding each assignment, cell-by-cell, would be more code and more maintenance over the development and operational life of the project, right?

I use a lot of what I call "formatting by exemplar" (using the font/colors/borders etc from one cell and applying it to others) so I converted my standard Sub by making the parameters into variables, adding the Set assignments, and removing all of the other formatting that can be passed from one cell to another.

By using the exemplar formatting approach I can have users, using Excel, show me exactly what they want to see as far as format is concerned. I can give them an first cut layout. from that point many of them can work through the process. With others, where I have to drive the mouse, it eliminates a lot of note-taking in meetings as well as "Could you make it light/darker greener/bluer then get back with me?" discussions.

On the back end, give those cells meaningful Names, e.g. on one project I have "fmtReleaseBanner" and "fmtNotesHeader" then I can pass the named range and the target range to one subroutine that performs the same action, whether it is in the NewMonth, UpdateForMeeting, or PublishResults main Sub.

Just my opinion!

2014-11-12 10:45:33

Willy Vanhaelen

Here is a much shorter version of the getRGB3 function in this tip:

Function getRGB3(rcell As Range, Optional opt As Integer) As Long
Dim C As Long
C = rcell.Interior.Color
Select Case opt
Case 1: getRGB3 = C Mod 256
Case 2: getRGB3 = C 256 Mod 256
Case 3: getRGB3 = C 65536 Mod 256
Case Else: getRGB3 = C
End Select
End Function

2014-11-12 10:44:16

Willy Vanhaelen

@ Bigger Don

If you put the macro in the sheet's code page you can reduce it to one line:

Sub copycolor()
Range("A3").Interior.Color = Range("D3").Interior.Color
End Sub

2014-11-11 12:47:50

Bigger Don

@ James

Why worry about the Hex value unless you want to manipulate it before assigning it to another cell? You can simply assign one cell's Interior.Color directly to another.

Sub copycolor()
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Worksheets("Sheet1").Range("D3")
Set rng2 = Worksheets("Sheet1").Range("A3")
rng2.Interior.Color = rng1.Interior.Color

End Sub

2014-11-10 22:01:29

James Wilson

I don't want to get the RGB, I want to set the RGB. Read the sColor hex from a cell and set that as the background colour of the cell "Asking".

Cheers Jim

Newest Tips

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.

Links and Sharing