एक्सेल में सेल के भीतर आंशिक पाठ रंग


12

एक्सेल में डायनामिकली कलर करने के लिए कई तरीके हैं जो अपने वैल्यू के आधार पर एक फुल सेल को कलर कर सकते हैं, लेकिन क्या वैसा ही डायनामिकली कलर करना है जो सेल के किसी भी हिस्से को उसके वैल्यू के आधार पर ही कलर करता हो?

उदाहरण के लिए, मान लीजिए कि मैं एक रिपोर्ट बना रहा हूँ जो निम्नलिखित की तरह दिखती है:

 _________________________
|       |    Dec    | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|

इस परिदृश्य में मैं केवल प्रतिशत मान (-25%) और (+ 10%) को रंगना चाहता हूं, न कि डॉलर के मूल्य $ 75 और $ 55 जो सेल में भी हैं। समस्या को जोड़ना यह है कि रंग गतिशील होना चाहिए (सकारात्मक के लिए हरा, नकारात्मक मूल्यों के लिए लाल), और ये कोशिकाएं संदर्भ हैं (इसलिए मैनुअल रंग तालिका से दूर है)।

मैंने बिल्ट इन का उपयोग करने की कोशिश की है TEXT() कार्य, लेकिन यह भी काम नहीं किया। विशेष रूप से मैंने कोशिश की =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)") कहा पे A1 डॉलर की राशि के लिए सेल संदर्भ है और A2 प्रतिशत डेल्टा के लिए सेल संदर्भ है।

निराशा की बात यह है कि कस्टम स्वरूपण [Green]0%;[Red](-0%) पूरी सेल (कस्टम नंबर फॉर्मेटिंग सेक्शन के माध्यम से) पर लागू होने पर ठीक काम करता है, लेकिन जब इसके माध्यम से आवेदन किया जाता है TEXT() यह काम करना बंद कर देता है। तो, मैं सेल के भीतर आंशिक मूल्य को कैसे कस्टम कर सकता हूं?


1
एक्सेल फ़ंक्शंस इसे नहीं कर सकते, सशर्त स्वरूपण केवल संपूर्ण कक्षों पर लागू होता है, और ऐसा लगता है कि आपने कस्टम नंबर स्वरूपों के साथ संभावनाओं को समाप्त कर दिया है। यह VBA में उल्लेखनीय हो सकता है, हालांकि। (एक साधारण उदाहरण के लिए, एक नज़र डालें यहाँ । मैं उत्सुक हूँ, यद्यपि। आप एक सेल में दो नंबर कैसे प्राप्त कर रहे हैं, उन्हें स्ट्रिंग्स के रूप में बना रहे हैं, शायद?
chuff

@chuff हाँ, मैं उन्हें स्ट्रिंग के रूप में बना रहा था ताकि मैं एक्सेल की ग्रिड सीमाओं (प्रत्येक पंक्ति के लिए निश्चित चौड़ाई स्तंभ आकार) के आसपास मिल सकूं।
Moses

जवाबों:


7

इस समस्या को हल करने के लिए मैंने दो दृष्टिकोण खोजे, और न ही जहां वास्तव में इष्टतम था।

पहला दृष्टिकोण दो अलग-अलग स्तंभों में तारों को तोड़ रहा था, इस तरह मैं पहले से वर्णित कस्टम प्रारूपण में से एक का उपयोग कर सकता था ताकि इसका रंग सेट किया जा सके। यह एक आदर्श समाधान नहीं है क्योंकि मुझे उस अतिरिक्त स्तंभ को समायोजित करने के लिए रिपोर्ट के "लुक और फील" पर समझौता करना पड़ा।

दूसरा दृष्टिकोण वीबीए / मैक्रोज़ का उपयोग करने के माध्यम से है, जो कि हालांकि मैंने इस विशेष परिदृश्य में बचने का विकल्प चुना है, यह कार्य करना होगा। जब तक मैं पूरे कामकाजी कोड को प्रिंट नहीं करूंगा, यह आवश्यक है

  1. वह सेल ढूंढें जिसे आप (या तो) समायोजित करना चाहते हैं ActiveCell या एक लूप)
  2. उपयोग Instr स्ट्रिंग में स्थान खोजने के लिए फ़ंक्शन जहां आप रंग को संशोधित करना चाहते हैं
  3. यदि पाठ की लंबाई परिवर्तनशील है, तो उपयोग करें Instr फिर से स्ट्रिंग में स्थान खोजने के लिए जहां आप रंग को रोकना चाहते हैं
  4. उपयोग Characters(start, length) पहले जिन मूल्यों को आप संशोधित करना चाहते हैं, उन्हें उजागर करने के लिए फ़ंक्शन, पहले पाए गए मानों में गुजरता है।
  5. के साथ रंग बदलें Font.Color = RGB(r,g,b)

4

मैक्रो का उपयोग करने वाला एक उदाहरण यहां पाया जा सकता है:

एक्सेल में कोशिकाओं में पाठ का हिस्सा रंग करने के लिए मैक्रो

एक्सेल मैक्रोज़ - सेल के रंग भाग के लिए लूप के लिए

एक्सेल मैक्रो का उपयोग करें जिसमें लूप के लिए लूप के लिए मौसम डेटा की पंक्तियों के माध्यम से लूप और सेल टेक्स्ट लाल का रंग भाग शामिल है यदि इसमें शब्द हॉट और ब्लू है अगर इसमें कूल शब्द है:

अनुदेश

  1. Excel में डेवलपर टैब पर क्लिक करें
  2. Visual Basic आइकन पर क्लिक करें और नीचे दिए मैक्रो टेक्स्ट को 1the कोड विंडो में कॉपी करें
  3. एक्सेल दृश्य पर वापस जाने के लिए एक्सेल आइकन पर क्लिक करें
  4. मैक्रोज़ आइकन पर क्लिक करें, TextPartColourMacro नामक मैक्रो का चयन करें और रन पर क्लिक करें

पूरा मैक्रो:

Sub TextPartColourMacro()

' Declarations and Initialisation
Dim Row As Integer, Col As Integer
Dim CurrentCellText As String
Col = 1

' Loop Through Rows 2 to 5
For Row = 2 To 5

    ' Get Text in Current Cell
    CurrentCellText = ActiveSheet.Cells(Row, Col).Value

    ' Get the Position of the Text Hot and Cool
    HotStartPosition = InStr(1, CurrentCellText, "Hot")
    CoolStartPosition = InStr(1, CurrentCellText, "Cool")

    ' Colour the Word Hot Red
    If HotStartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 3).Font.Color = RGB(255, 0, 0)
    End If

    ' Colour the Word Cool Blue
    If CoolStartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition, 4).Font.Color = RGB(0, 0, 255)
    End If

Next Row
End Sub

2
सुपर उपयोगकर्ता का उद्देश्य कहीं और उत्तरों के लिंक के संग्रह के बजाय नॉलेजबेस का निर्माण करना है। बाहरी लिंक टूट सकते हैं, जिस स्थिति में आपके उत्तर का कोई मूल्य नहीं होगा। कृपया अपने उत्तर में आवश्यक जानकारी शामिल करें और एट्रिब्यूशन और आगे पढ़ने के लिए लिंक का उपयोग करें।
fixer1234

यह एक अच्छा समाधान है, मैं इसे तैनात करूंगा।
htm11h

-1

हाइलाइट किए जाने वाले टेक्स्ट के ऊपर लाइन डालें, जितनी लाइन आपको हाई लाइट करनी है, उतनी ही चौड़ी बनाएं, टेक्स्ट कलर को येलो में बदलें (या कोई भी रंग चुनें) और अपनी पसंद के हिसाब से लाइन की अपारदर्शिता कम करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.