2009-09-15 22 views
24

में डेटा की rgb मूल्य के लिए सेल के रंग मैं एक स्तंभ rgb मूल्यों से युक्त है, जैसे हैएक्सेल: सेट पृष्ठभूमि सेल

127,187,199 
67,22,94 

एक्सेल में, वहाँ किसी भी तरह से मैं इस का उपयोग कर सकते की पृष्ठभूमि का रंग सेट करने के लिए है कोशिका?

उत्तर

45

आप VBA का उपयोग कर सकते हैं - जैसे

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

कुछ बस सेल मूल्य प्रेषित।

17

अकेले रंग गुण को सेट सटीक मेल की गारंटी देगा। एक्सेल 2003 केवल 56 रंगों को एक साथ संभाल सकता है। अच्छी खबर यह है कि आप उन 56 स्लॉट्स (जिन्हें कलरइंडेक्स कहा जाता है) पर किसी भी आरजीबी मान को असाइन कर सकते हैं। जब आप कलर प्रॉपर्टी का उपयोग करके सेल का रंग सेट करते हैं तो यह एक्सेल को निकटतम "कलरइंडेक्स" का उपयोग करने का कारण बनता है। उदाहरण: आरजीबी 10,20,50 (या 3281930) में सेल सेट करने से वास्तव में इसे रंग सूचकांक 56 पर सेट किया जाएगा जो 51,51,51 (या 3355443) है।

आप आश्वासन दिया जा करने के लिए आप एक सटीक मिलान मिला चाहते हैं, आप आप चाहते हैं आरजीबी मूल्य के लिए एक ColorIndex बदलने और फिर कहा मूल्य के लिए सेल के ColorIndex बदलने की जरूरत है। हालांकि आप जानते हैं कि एक रंग सूचकांक के मान बदलकर आप सभी कोशिकाओं को पहले से ही कार्यपुस्तिका के भीतर है कि रंग का उपयोग का रंग बदल जाना चाहिए। उदाहरण देने के लिए, रेड कलरइंडेक्स 3 है। इसलिए आपने जो भी सेल बनाया है, आपने वास्तव में कलरइंडेक्स 3 बनाया है। और यदि आप कलरइंडेक्स 3 को बैंगनी कहने के लिए फिर से परिभाषित करते हैं, तो आपका सेल वास्तव में बैंगनी बना दिया जाएगा, लेकिन अन्य सभी लाल कोशिकाएं कार्यपुस्तिका भी बैंगनी में बदल दी जाएगी।

इस से निपटने के लिए कई रणनीतियों रहे हैं। एक तरीका यह है कि एक इंडेक्स का उपयोग अभी तक नहीं किया जा रहा है, या सिर्फ एक ऐसा जो आपको लगता है कि इस्तेमाल नहीं किया जाएगा। एक और तरीका के आरजीबी मूल्य को निकटतम रंग इंडेक्स में बदलना है ताकि आपका परिवर्तन सूक्ष्म हो। नीचे दिया गया कोड इस दृष्टिकोण को लेता है। ज्ञान का लाभ उठाते हुए कि निकटतम कलरइंडेक्स असाइन किया गया है, यह सीधे आरजीबी मान को सेल (जिससे निकटतम रंग प्रदान करता है) असाइन करता है और उसके बाद उस अनुक्रमणिका में आरजीबी मान असाइन करता है।

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 
+0

धन्यवाद, यह भी बहुत उपयोगी है। –

1

सेल वर्कशीट फॉर्मूला के रूप में उपयोग किए गए वीबीए फ़ंक्शन के भीतर से नहीं बदला जा सकता है।

=HYPERLINK(SetRGB(D2;A2;B2;C2);"HOVER!") 

एक बार जब आप मंडराना:

Function SetRGB(x As Range, R As Byte, G As Byte, B As Byte) 
    On Error Resume Next 
    x.Interior.Color = RGB(R, G, B) 
    x.Font.Color = IIf(0.299 * R + 0.587 * G + 0.114 * B < 128, vbWhite, vbBlack) 
End Function 

तो इस सूत्र अपने पत्र में, उदाहरण के लिए सेल D2 में उपयोग करें: इस समाधान के माध्यम से छोड़कर ...

एक नया मॉड्यूल में इस समारोह रखो सेल पर माउस (इसे आज़माएं!), कोशिकाओं A2 से C2 से ली गई आरजीबी के लिए पृष्ठभूमि रंग अपडेट। फ़ॉन्ट रंग एक विपरीत सफेद या काला है।

0

अपने वर्तमान पूर्णांक मान के आधार पर प्रत्येक कोशिका रंग करने के लिए, निम्नलिखित काम करना चाहिए, यदि आप Excel का नवीनतम संस्करण है। तो एक नंबर पर आप एक स्ट्रिंग है तो आप तीन नंबर में स्ट्रिंग विभाजित है और rgb का उपयोग कर उन्हें गठजोड़ कर सकते हैं (के बजाय (पुराने संस्करण को संभाल नहीं rgb के साथ-साथ)

Sub Colourise() 
' 
' Colourise Macro 
' 
' Colours all selected cells, based on their current integer rgb value 
' For e.g. (it's a bit backward from what you might expect) 
' 255 = #ff0000 = red 
' 256*255 = #00ff00 = green 
' 256*256*255 #0000ff = blue 
' 255 + 256*256*255 #ff00ff = magenta 
' and so on... 
' 
' Keyboard Shortcut: Ctrl+Shift+C (or whatever you want to set it to) 
' 
    For Each cell In Selection 
    If WorksheetFunction.IsNumber(cell) Then 
     cell.Interior.Color = cell.Value 
    End If 
    Next cell 
End Sub 

)।

संबंधित मुद्दे