excel - एक्सेल फॉर्मूला जो सेल रंग प्रिंट करता है(रंग इंडेक्स या आरजीबी)




excel-formula (2)

आपके लिए कुछ छोटे फ़ंक्शन हैं अपनी चादर से, VBA एडिटर पर पहुंचने के लिए Alt - F11 दबाएं, एक नया मॉड्यूल डालें, नीचे कोड पेस्ट करें, अपने वर्कशीट पर वापस जाएं और उनके नामों से उनका उपयोग करें, जैसे =FillColor(A1)

पहले दो वादा "3-लाइनर्स" हैं जो फ़ॉन्ट और पृष्ठभूमि रंगों के लिए दशमलव मान देते हैं - हालांकि यह बहुत उपयोगी नहीं है

दूसरी जोड़ी दशमलव संख्या को आरजीबी में बदल देती है और एन, एन, एन की स्ट्रिंग रिटर्न करती है

तीसरी जोड़ी सरणी सूत्र हैं - एक पंक्ति में 3 कक्षों का चयन करें, सूत्र दर्ज करें और 3 पड़ोसी कोशिकाओं में संख्यात्मक आरजीबी मान प्राप्त करने के लिए Ctrl + Shift + Enter दबाएं

Function FillColor(Target As Range) As Variant
    FillColor = Target.Interior.Color
End Function

Function FontColor(Target As Range) As Variant
    FontColor = Target.Font.Color
End Function

Function FillColorRGB(Target As Range) As Variant
Dim N As Double

    N = Target.Interior.Color
    FillColorRGB = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
End Function

Function FontColorRGB(Target As Range) As Variant
Dim N As Double

    N = Target.Font.Color
    FontColorRGB = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
End Function

Function FillColorRGBArray(Target As Range) As Variant
Dim N As Double, A(3) As Integer

    N = Target.Interior.Color
    A(0) = N Mod 256
    A(1) = Int(N / 256) Mod 256
    A(2) = Int(N / 256 / 256) Mod 256
    FillColorRGBArray = A
End Function

Function FontColorRGBArray(Target As Range) As Variant
Dim N As Double, A(3) As Integer

    N = Target.Font.Color
    A(0) = N Mod 256
    A(1) = Int(N / 256) Mod 256
    A(2) = Int(N / 256 / 256) Mod 256
    FontColorRGBArray = A
End Function

सावधानी के एक शब्द : एक सेल का रंग बदलने से उपर्युक्त कार्य / सूत्रों द्वारा पुनर्गणना प्रारंभ नहीं होता है, सामान्य रूप से एक सेल के रूप में recoloring के रूप में पुनर्गणना ड्राइव नहीं करना चाहिए। आपको Ctrl + Alt + Shift + F9 का उपयोग करके मैन्युअल रूप से पूरी पुनर्कलन शुरू करना होगा

क्या एक्सेल में एक फॉर्मूला है जो सेल के रंग इंडेक्स (या आरजीबी) को पुनः प्राप्त करता है?

मुझे follwing फ़ंक्शन मिला:

CELL(info_type, the_cell)

यहां प्रलेखित है , लेकिन इसमें सेल रंग के लिए कोई संदर्भ जानकारी नहीं है।

यह एक color जानकारी है, लेकिन यह मेरे लिए बेकार है वास्तव में, इसे निम्नानुसार वर्णित किया गया है:

"color" मूल्य 1 यदि कक्ष नकारात्मक मानों के लिए रंग में स्वरूपित होता है; अन्यथा 0 (शून्य) रिटर्न

कोई उपाय?

इसके अलावा, मैंने देखा कि यह ऐसा Cell.Interior.Color संपत्ति है जो Cell.Interior.Color कर रहा Cell.Interior.Color लेकिन वास्तव में मैं मैक्रोज़ का उपयोग नहीं कर रहा हूँ, लेकिन साधारण एक्सेल फ़ार्मुलों। वहाँ एक तरीका है एक सूत्र के साथ VBA कार्यों का अनुकरण?


कृपया नीचे से प्रयास करें

किए गए परिवर्तन: कोड में टिप्पणी देखें

मॉड्यूल

Public Function Performance_Message(NonPreferredAvg As Single _
                                  , NonPreferredAvgname As String _
                                  , PreferredAvg As Single _
                                  , PreferredAvgname As String _
                                  , Optional Outputtype As String _
                                   ) As Variant

    Dim performancemessage As String
    Dim averagedifference As Single
    Dim stravgdif As String
    Dim cellcolor As String

    averagedifference = Abs(NonPreferredAvg - PreferredAvg)
    stravgdif = FormatPercent(averagedifference, 2)

    Select Case PreferredAvg
        Case Is < NonPreferredAvg
            performancemessage = PreferredAvgname & " Is " & stravgdif & " Less Than " & NonPreferredAvgname
            cellcolor = 4 '"green" 'Changes made

        Case Is = NonPreferredAvg
            performancemessage = PreferredAvgname & " Equals " & NonPreferredAvgname
            cellcolor = 6 '"yellow" ''Changes made

        Case Is > NonPreferredAvg
            performancemessage = PreferredAvgname & " Is " & stravgdif & " Greater Than " & NonPreferredAvgname
            cellcolor = 5 '"blue" 'Changes made
        Case Else
            performancemessage = "Something Bad Happened"
    End Select
    If Outputtype = "color" Then
        Performance_Message = cellcolor
    Else
        Performance_Message = performancemessage
    End If
End Function

वर्कशीट

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim myColor As Double
  myColor = Target.Value ''Changes made
  Call SetPerformancecolor(Target, myColor)
End Sub

Private Sub SetPerformancecolor(Target As Range, myColor As Double)
  Target.Interior.ColorIndex = myColor ''Changes made
End Sub




excel-formula