نیل در برگه های خود از رنگ ها بسیار استفاده می کند. او می داند که می تواند رنگی را بر اساس یک مقدار RGB عددی تولید کند (همانطور که در سایر شماره های ExcelTips توضیح داده شده است ). نیل مایل است برعکس این کار را انجام دهد - مقدار RGB را تعیین کند. او فکر می کند که آیا راهی برای بازگشت (از طریق تابع یا ماکرو) مقدار RGB رنگ مورد استفاده برای پر کردن یک سلول وجود دارد. (نیل میخواهد رنگ واقعی روی سلول اعمال شود، نه هر رنگی که «نقل از آن» باشد، مانند رنگی که توسط قالب شرطی تحمیل شده است.)
اکسل تابعی برای انجام این کار ندارد، اما اگر فقط باید مقادیر RGB را برای یک سلول بررسی کنید، سادهترین راه این است که مراحل زیر را دنبال کنید:

شکل 1. تب Custom از کادر محاوره ای Colors.
- سلولی را انتخاب کنید که با رنگی که می خواهید بررسی کنید فرمت شده است.
- تب Home نوار را نمایش دهید.
- روی فلش رو به پایین در سمت راست ابزار Fill Color در گروه Font کلیک کنید. اکسل یک پالت کوچک از رنگ ها و برخی گزینه های دیگر را نمایش می دهد.
- رنگ های بیشتر را انتخاب کنید اکسل کادر محاوره ای Colors را نمایش می دهد.
- مطمئن شوید که تب Custom نمایش داده شده است. (شکل 1 را ببینید.)
- در پایین کادر محاورهای، میتوانید مقادیر جداگانه برای اجزای قرمز، سبز و آبی رنگ در سلول را مشاهده کنید.
- پس از اتمام روی OK کلیک کنید.
اگر نیاز به دریافت مقادیر بیشتر دارید، ایجاد تابع تعریف شده توسط کاربر خود راه حلی است. تابعی که استفاده می کنید بستگی به این دارد که واقعاً چه چیزی را می خواهید به کاربرگ خود بازگردانید. به عنوان مثال، اگر می خواهید کد هگز شش کاراکتری سنتی را برای رنگ های 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
این ماکرو به رنگ داخلی هر سلولی که به آن اشاره می کنید نگاه می کند، مقادیر هگز را برای رنگ به ترتیب درست قرار می دهد و رشته را به اکسل برمی گرداند. برای استفاده از تابع، به سادگی آن را در کاربرگ خود با سلولی که به این شکل ارجاع داده شده است فراخوانی کنید:
=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