2012-05-04 15 views
13

मेरे पास प्रतीकों और मिलान हेक्स रंगों की एक स्प्रेडशीट है। मैं कोशिका के भीतर हेक्स रंग के साथ स्वयं सेल (या उसके आगे वाला) भरना चाहता हूं। मैंने "सशर्त स्वरूपण" के बारे में कुछ पढ़ा है, और मुझे लगता है कि ऐसा करने का तरीका है।सेल के भीतर हेक्स रंग मान का उपयोग कर सेल को हाइलाइट कैसे करें?

मैं परिणाम को कैसे प्राप्त कर सकता हूं?

+5

मुझे नहीं लगता कि सशर्त स्वरूपण यह तुम्हारे लिए क्या होगा। मुझे लगता है कि आपको एक मैक्रो चलाने की आवश्यकता होगी जो सेल मान को पढ़ता है और 'रेंज ("ए 1: ए 6") सेट करता है। आंतरिक। रंग = आरजीबी (200,160,35) '। जिसका अर्थ है कि आपको आरजीबी में परिवर्तित करने के लिए गणित करना होगा या एक्सेल के अजीब हेक्स दृष्टिकोण का उपयोग करना होगा। – Marc

+0

उहम पता है, आप कैसे 3 उत्तरों में से 1 स्वीकार करते हैं? :) – gsamaras

उत्तर

57

सभी रंगों के लिए सशर्त स्वरूपण के साथ हासिल नहीं किया जा सकता है।

मान लिया जाये: ROW1 डाटा लेबल होता है, डेटा सेट अंतराल नहीं है, हेक्स रंग भरने फॉन्ट नहीं करने के लिए है, तो आप स्तंभ सी में हेक्स रंग मान (संख्या, सूत्र नहीं) पार्स है: ई (आर , जी, बी) और है कि आप इस बार ऐसा करने के लिए की आवश्यकता नहीं है, तो ColourCells मैक्रो पराक्रम सूट:

Sub ColourCells() 
Dim HowMany As Integer 
On Error Resume Next 
Application.DisplayAlerts = False 
HowMany = Application.InputBox _ 
(Prompt:="Enter last row number.", Title:="To apply to how many rows?", Type:=1) 
On Error GoTo 0 
Application.DisplayAlerts = True 
If HowMany = 0 Then 
Exit Sub 
Else 
    Dim i As Integer 
    For i = 2 To HowMany 
     Cells(i, 3).Interior.Color = RGB(Cells(i, 3), Cells(i, 4), Cells(i, 5)) 
    Next i 
End If 
End Sub 

और संकेत दिए जाने मूल्य n के लिए आप चाहते हैं दर्ज करें।

नमूना उत्पादन और सूत्रों आदि:

SO11466034

Excel के आरजीबी() फ़ंक्शन वास्तव में एक बीजीआर मूल्य (मैं किसी को पता हो सकता है यही कारण है कि कह रहा है यही कारण है कि हालांकि नहीं लगता कि) तो Excel में निबल से पता चलता बनाता है उल्टे क्रम। कोड के लिए कॉलम 3,4,5 तार्किक था लेकिन छवि में पारंपरिक आरजीबी की बजाय बीजीआर मैंने सोचा कि अजीब लग सकता है। छवि में एफ के लिए सी 3 मान (LEFT 'आरजीबी' तीन का हाथ कॉलम) हेक्स रंग में राइट() लागू करने से लिया गया है।

+2

+1 अच्छी तरह से किया गया। – brettdj

+0

देख सकते हैं कि तापमान डेटा को अधिक आकर्षक तरीके से दिखाने के लिए इसका उपयोग क्यों किया जा सकता है, फिर केवल टैब्यूलर डेटा। +1 – ryyker

+1

@ryyker एक ताप मानचित्र (तापमान या अन्यथा के लिए) के लिए [@ जोनपेल्टियर] (http://peltiertech.com/WordPress/heat-map-excel-conditional-formatting/) ब्याज का हो सकता है। – pnuts

4

बहुत सरल:

ActiveCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(ActiveCell.Text, 2)) 

मिड बंद स्ट्रिप्स अग्रणी "#", HEX2DEC दशमलव मान कि VBA का उपयोग कर सकते में हेक्स संख्या बदल जाता है।

तो सीमा पर कार्रवाई करने के चयन करें और इस चलाएँ:

Sub ColorCellsByHexInCells() 
    Dim rSelection As Range, rCell As Range 

    If TypeName(Selection) = "Range" Then 
    Set rSelection = Selection 
    For Each rCell In rSelection 
     rCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(rCell.Text, 2)) 
    Next 
    End If 
End Sub 
+0

क्या यह फ़ंक्शन बदला जा सकता है ताकि इसे सीधे कंडिटिटोनल स्वरूपण में उपयोग किया जा सके? IfHexColour() - तो यह पहले तत्व के रूप में # को पहचानता है, फिर 6 वर्णों को मान्य करता है, फिर आरजीबी में परिवर्तित होता है और रंग को सेट करता है - सक्रिय सेल –

+0

में मुझे नहीं लगता कि अंतर्निहित सशर्त स्वरूपण इसे कैसे संभाल सकता है। लेकिन आप वीबीए का उपयोग # से शुरू होने वाली स्ट्रिंग का पता लगाने के लिए कर सकते हैं, इसे वैध हेक्स स्ट्रिंग के रूप में मान्य करें, और तदनुसार सेल को रंग दें। –

10

जॉन पेल्टियर के जवाब देने के लिए माइनर संपादित करें। उनका कार्य ALMOST काम करता है, लेकिन यह प्रस्तुत करने वाले रंग गलत हैं क्योंकि एक्सेल आरजीबी की बजाय बीजीआर के रूप में प्रस्तुत करेगा।

Sub ColorCellsByHex() 
    Dim rSelection As Range, rCell As Range, tHex As String 

    If TypeName(Selection) = "Range" Then 
    Set rSelection = Selection 
    For Each rCell In rSelection 
     tHex = Mid(rCell.Text, 6, 2) & Mid(rCell.Text, 4, 2) & Mid(rCell.Text, 2, 2) 
     rCell.Interior.Color = WorksheetFunction.Hex2Dec(tHex) 
    Next 
    End If 
End Sub 
+0

इतना बेहतर! बस सीमा का चयन करें और मैक्रो निष्पादित करें। एक असली अच्छा जवाब है। बहुत बहुत धन्यवाद। – Killer

0

इस के लिए, एक userform HEX2DEC समारोह के साथ बनाया जा सकता है: यहाँ ठीक किया समारोह है, जो 'सही' के क्रम में हेक्स मूल्यों की जोड़ी स्वैप है।

Function Hex2Dec(n1 As String) As Long 
    Dim nl1 As Long 
    Dim nGVal As Long 
    Dim nSteper As Long 
    Dim nCount As Long 
    Dim x As Long 
    Dim nVal As Long 
    Dim Stepit As Long 
    Dim hVal As String 

    nl1 = Len(n1) 
    nGVal = 0 
    nSteper = 16 
    nCount = 1 
    For x = nl1 To 1 Step -1 
     hVal = UCase(Mid$(n1, x, 1)) 
     Select Case hVal 
     Case "A" 
      nVal = 10 
     Case "B" 
      nVal = 11 
     Case "C" 
      nVal = 12 
     Case "D" 
      nVal = 13 
     Case "E" 
      nVal = 14 
     Case "F" 
      nVal = 15 
     Case Else 
      nVal = Val(hVal) 
     End Select 
     Stepit = (nSteper^(nCount - 1)) 
     nGVal = nGVal + nVal * Stepit 
     nCount = nCount + 1 
    Next x 
    Hex2Dec = nGVal 
End Function 
... 
UserForm1.TextBox1 = "RGB(" & Hex2Dec(UserForm1.txtHex1.Value) & "," & _ 
      Hex2Dec(UserForm1.txtHex2.Value) & "," & Hex2Dec(UserForm1.txtHex3.Value) & ")" 

उदाहरण के लिए, पाठ बॉक्स में प्रवेश मूल्य: # FF8800 - परिणाम: आरजीबी (255,136,0)

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