एक्सेल सशर्त स्वरूपण विखंडन


19

अक्सर, मैं सशर्त स्वरूपण के साथ एक शीट बनाता हूं, और सेल रेंज सेट करता हूं ताकि सशर्त स्वरूपण नियम केवल एक बार कोशिकाओं की श्रेणी में लागू हो, उदा।

Make $A$1:$A$30 red and
Make $B$1:$B$30 blue.

कई पंक्तियों और / या स्तंभों को सम्मिलित / हटाने के बाद सशर्त स्वरूपण नियम सेट बहुत खंडित हो जाता है, एक ही नियम के साथ अलग-अलग श्रेणियों के लिए दोहराया जाता है। जैसे

Make $A$1:$A$2 red 
Make $A$3:$A$4 red 
Make $A$5:$A$9 red
Make $A$10:$A$20 red 
Make $A$21:$A$30 red
...
Make $B$1:$B$2 blue 
Make $B$3:$B$4 blue
Make $B$5:$B$9 blue
Make $B$10:$B$20 blue 
Make $B$21:$B$30 blue
....

क्या इसे रोकने का एक अच्छा अभ्यास तरीका है, या क्या मैं नियम सेट को साफ करने के लिए बर्बाद हो गया हूं, जब वे बहुत गन्दा हो जाते हैं?

जवाबों:


12

पंक्तियों को सम्मिलित करने और हटाने से सशर्त स्वरूपण विखंडित होने का कारण नहीं बनता है।

इसका कारण मानक कॉपी / पेस्ट का उपयोग करके कोशिकाओं या पंक्तियों के बीच कॉपी / पेस्ट करना है। फिक्स हमेशा पेस्ट-वैल्यू या पेस्ट-फॉर्मूला का उपयोग करना है। गंतव्य दाईं ओर क्लिक करें और चिपकाएँ विकल्प अनुभाग 123 (मान) और f (सूत्र) प्रदान करेगा। फ़ॉर्मेटिंग को कॉपी / पेस्ट न करें क्योंकि इससे परिस्थितियों को कॉपी / पेस्ट किया जाता है और कभी-कभी वे टुकड़े-टुकड़े हो जाएंगे।

जब आप एक मानक कॉपी / पेस्ट करते हैं तो यह सेल के सशर्त सूत्रों को भी कॉपी करता है। मान लीजिए कि आपके दो नियम हैं:
1) $ A $ 1: $ A $ 30 लाल करें
2) $ B $ 1 बनायें: $ B $ 30 नीला
अब A10: B10 का चयन करें और A20: B20 को कॉपी / पेस्ट करें। Excel क्या करेगा A20: B20 के लिए सशर्त स्वरूपण को हटाने के लिए उन नियमों पर लागू होता है जो उन कक्षों पर लागू होते हैं और नए नियम जोड़ते हैं जिनमें A20: B20 के लिए स्वरूपण है। आप चार नियमों के साथ समाप्त होते हैं।
1) बनाओ = $ A $ 20 लाल
2) बनाओ = $ B $ 20 नीला
3) मेक = $ ए $ १: $ ए $ १ ९, $ ए $ २१: $ ए $ ३० रेड
4) बनाओ = $ B $ 1: $ B $ 19, $ B $ 21: $ B $ 30 नीला
यदि आपने A10 से A20 तक कॉपी / पेस्ट किया होता तो स्रोत और गंतव्य दोनों पर लागू एक ही नियम को देखा होता और नियमों को खंडित नहीं किया होता। एक्सेल इतना स्मार्ट नहीं है कि जब आपकी कॉपी / पेस्ट दो या अधिक सशर्त स्वरूपों को प्रभावित करता है तो विखंडन से कैसे बचा जाए।

पंक्तियों को सम्मिलित करने और हटाने से Excel में विखंडन नहीं होता है क्योंकि Excel केवल उस नियम (यों) को विस्तारित या सिकोड़ता है जो उस क्षेत्र को कवर करते हैं जहाँ आपने पंक्ति सम्मिलित की थी या हटा दी थी।

किसी ने $ Q: $ Q $ 30 के बजाय $ Q: $ Q का उपयोग करने का सुझाव दिया। यह मदद नहीं करता है और आप तब भी फ़्रेग्मेंटेशन प्राप्त करेंगे जब आप ऊपर बताए अनुसार सेल फ़ॉर्मेटिंग को कॉपी / पेस्ट करेंगे।


यह भी ध्यान दें कि & lt; kbd & gt; ctrl-x & lt; kbd & gt; सेल कट से सशर्त स्वरूपण को हटा देगा (अब सेल का कोई प्रारूपण नहीं है), और नए सेल में प्रारूपण पेस्ट करें। मैं शर्त लगाउंगा कोई व्यक्ति पता है कि इसे कैसे रोका जाए?
user5389726598465

@ user135711 यह इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। डिफ़ॉल्ट रूप से, स्रोत सेल से सूत्र, स्वरूपण और स्रोत सेल के लिंक को कॉपी और कट करते हैं, स्रोत सेल से समान को हटाते हैं। यदि इरादा स्रोत से सूत्र / मान को हटाने का है, लेकिन प्रारूपण रखने के लिए मैं सामान को गंतव्य पर कॉपी / पेस्ट करूँगा और फिर स्रोत को हटा दूंगा। हटाएँ (डेल कुंजी) केवल सूत्र या मान को साफ़ करता है। यह स्वरूपण और लिंक को जगह में छोड़ देता है।
user3347790

1
INDIRECT () फ़ंक्शन इस प्रश्न के एक अन्य संस्करण में एक उत्तर के रूप में उत्कीर्ण किया गया है क्योंकि यह उन कोशिकाओं के लिए मूल्यांकन नहीं किया जाता है जब यह फ़ील्ड में लागू होता है जैसे कि आपने मैन्युअल रूप से कक्षों में प्रवेश किया था।
user5389726598465

superuser.com/a/1113566/79488 यदि आप कॉपी / पृष्ठ का उपयोग करते हैं तो खंडित नियमों को साफ करने के लिए एक अच्छा समाधान है
Fabian Schmied

5

तालिका के एक कॉलम में सशर्त प्रारूप लागू करते समय एक ही समस्या थी। पंक्तियों को जोड़ते समय, मैंने पाया कि नियम का उपयोग करके पूरे कॉलम में लागू करना सबसे अच्छा है $A:$Aया जो भी कॉलम है।

enter image description here


2

मैन्युअल रूप से कोशिकाओं को कॉपी / चिपकाना / काटना / काटना समस्या का कारण बनता है और इससे बचना कठिन है।

VBA मैक्रो के माध्यम से हल की गई समस्या।

मैन्युअल रूप से कोशिकाओं को कॉपी / पेस्ट / काटने / काटने / डालने के बजाय, मैं इसे एक्सेल मैक्रो के माध्यम से करता हूं, जो सेल रेंज (एक बटन के माध्यम से सक्रिय) को संरक्षित करता है।

Sub addAndBtnClick()
    Set Button = ActiveSheet.Buttons(Application.Caller)
    With Button.TopLeftCell
        ColumnIndex = .Column
        RowIndex = Button.TopLeftCell.Row
    End With
    currentRowIndex = RowIndex
    Set Table = ActiveSheet.ListObjects("Table name")
    Table.ListRows.Add (currentRowIndex)
    Set currentCell = Table.DataBodyRange.Cells(currentRowIndex, Table.ListColumns("Column name").Index)
    currentCell.Value = "Cell value"
    Call setCreateButtons
End Sub

Sub removeAndBtnClick()
    Set Button = ActiveSheet.Buttons(Application.Caller)
    With Button.TopLeftCell
        ColumnIndex = .Column
        RowIndex = Button.TopLeftCell.Row
    End With
    currentRowIndex = RowIndex
    Set Table = ActiveSheet.ListObjects("Table name")
    Table.ListRows(currentRowIndex - 1).Delete
End Sub

Sub setCreateButtons()
    Set Table = ActiveSheet.ListObjects("Table name")
    ActiveSheet.Buttons.Delete
    For x = 1 To Table.Range.Rows.Count
        For y = 1 To Table.Range.Columns.Count

            If y = Table.ListColumns("Column name").Index Then
                Set cell = Table.Range.Cells(x, y)
                If cell.Text = "Some condition" Then
                    Set btn = ActiveSheet.Buttons.Add(cell.Left + cell.Width - 2 * cell.Height, cell.Top, cell.Height, cell.Height)
                    btn.Text = "-"
                    btn.OnAction = "removeAndBtnClick"
                    Set btn = ActiveSheet.Buttons.Add(cell.Left + cell.Width - cell.Height, cell.Top, cell.Height, cell.Height)
                    btn.Text = "+"
                    btn.OnAction = "addAndBtnClick"
                End If
            End If
        Next
    Next
End Sub

स्वरूपण रीसेट करने के लिए (वास्तव में आवश्यक नहीं):

Sub setCondFormat()
    Set Table = ActiveSheet.ListObjects("Table name")
    Table.Range.FormatConditions.Delete
    With Table.ListColumns("Column name").DataBodyRange.FormatConditions _
        .Add(xlExpression, xlEqual, "=ISTLEER(A2)") 'Rule goes here
        With .Interior
            .ColorIndex = 3 'Formatting goes here
        End With
    End With
    ...
End Sub

2
कृपया एक से अधिक प्रश्नों के उत्तर एक ही न दें। यदि समान जानकारी वास्तव में दोनों प्रश्नों का उत्तर देती है, तो एक प्रश्न (आमतौर पर नया एक) दूसरे के डुप्लिकेट के रूप में बंद होना चाहिए। आप इससे संकेत कर सकते हैं डुप्लिकेट के रूप में इसे बंद करने के लिए मतदान या, यदि आपके पास उसके लिए पर्याप्त प्रतिष्ठा नहीं है, झंडा बुलंद करो यह इंगित करने के लिए कि यह एक डुप्लिकेट है। अन्यथा इस सवाल के अपने जवाब को दर्जी करें और एक ही उत्तर को कई स्थानों पर पेस्ट न करें।
DavidPostill

1

(यह वर्कअराउंड है, इसलिए मैं इसे एक टिप्पणी के रूप में रखने जा रहा था, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है।)

दुर्भाग्य से ऐसा लगता है कि जब आप गन्दा हो जाते हैं तो आप नियम सेट को साफ़ करने के लिए बर्बाद हो जाते हैं।

ऐसा करने का एक आसान तरीका एक वर्कशीट बनाना है जिसमें आपको जिस फॉर्मेटिंग की आवश्यकता होती है, वह है, लेकिन कोई डेटा नहीं। यह आपकी मूल कार्यपत्रक के समान कार्यपुस्तिका में हो सकता है, या किसी अन्य कार्यपुस्तिका में जिसे आप टेम्पलेट के रूप में रखते हैं।

जब आपको सफाई करने की आवश्यकता होती है, तो इस कार्यपत्रक पर जाएं, राइट-क्लिक करें सभी का चयन करे बटन, चुनें प्रारूप चित्रकार , फिर क्लिक करें सभी का चयन करे अपनी मूल वर्कशीट पर बटन। स्वरूपों को अप्राप्य संस्करण के साथ ओवरराइट किया गया है।

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