एक्सेल वीबीए में डेटा सॉर्ट करना

एक्सेल वीबीए में डेटा सॉर्ट करना

एक्सेल के पास एक्सेल फ्रंट एंड पर रिबन का उपयोग करके सारणीबद्ध डेटा की एक श्रृंखला को सॉर्ट करने का एक उत्कृष्ट माध्यम है, और किसी बिंदु पर, आप शायद अपने वीबीए कोड के भीतर इस कार्यक्षमता का उपयोग करना चाहेंगे। सौभाग्य से, यह करना बहुत आसान है।

एक्सेल रिबन पर 'डेटा' टैब के 'सॉर्ट एंड फिल्टर' ग्रुप में 'सॉर्ट' आइकन पर क्लिक करके फ्रंट-एंड डायलॉग बॉक्स पाया जाता है। आपको पहले सारणीबद्ध डेटा की श्रेणी का चयन करना होगा।

आप कस्टम सॉर्ट के लिए डायलॉग बॉक्स दिखाने के लिए Alt-A-S-S का भी उपयोग कर सकते हैं।

एक्सेल के बाद के संस्करणों में सॉर्ट विधि में काफी सुधार किया गया है। सॉर्ट तीन स्तरों तक सीमित था, लेकिन अब आप अपनी आवश्यकता के अनुसार कई स्तरों में प्रवेश कर सकते हैं, और यह VBA के भीतर भी लागू होता है।

आप अपने वीबीए कोड में एक्सेल सॉर्ट डायलॉग में ऑफ़र पर सभी प्रकार के कार्यों को शामिल कर सकते हैं। एक्सेल में सॉर्ट फ़ंक्शन तेज़ है, और किसी भी चीज़ से तेज़ है जिसे आप स्वयं वीबीए में लिख सकते हैं, इसलिए कार्यक्षमता का लाभ उठाएं।

ध्यान दें कि जब आप VBA में सॉर्ट करते हैं, तो सॉर्ट पैरामीटर फ़्रंट-एंड सॉर्ट डायलॉग बॉक्स में समान रहते हैं। कार्यपुस्तिका सहेजे जाने पर वे भी सहेजे जाते हैं।

यदि कोई उपयोगकर्ता सारणीबद्ध डेटा की समान श्रेणी का चयन करता है और सॉर्ट करें आइकन पर क्लिक करता है, तो वे आपके सभी पैरामीटर देखेंगे जो आपके VBA कोड द्वारा दर्ज किए गए हैं। यदि वे अपना खुद का डिज़ाइन बनाना चाहते हैं, तो उन्हें पहले आपके सभी प्रकार के स्तरों को हटाना होगा, जो उनके लिए बहुत कष्टप्रद होगा।

साथ ही, यदि आप अपने कोड के भीतर पैरामीटर नहीं बदलते हैं, और डिफ़ॉल्ट मानों पर भरोसा करते हैं, तो आप पाएंगे कि उपयोगकर्ता ने परिवर्तन किए हैं जो आपके वीबीए सॉर्ट में प्रतिबिंबित होंगे, और अप्रत्याशित परिणाम दे सकते हैं, जिन्हें डीबग करना बहुत मुश्किल हो सकता है .

सौभाग्य से, सभी प्रकार के मापदंडों को फिर से सेट करने के लिए VBA में एक स्पष्ट विधि है ताकि उपयोगकर्ता को एक साफ सॉर्ट डायलॉग बॉक्स दिखाई दे

1 वर्कशीट्स ("शीट 1")। सॉर्ट करें। सॉर्टफिल्ड्स। क्लियर

सॉर्ट पूरा होने से पहले और बाद में वीबीए में सॉर्ट पैरामीटर को साफ़ करना अच्छा अभ्यास है।

VBA में सॉर्ट विधि का व्यावहारिक उपयोग

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

यदि आप इस डेटा को अपनी वर्कशीट में किसी उपयोगकर्ता को प्रस्तुत कर रहे हैं, तो उपयोगकर्ता को बड़ी मात्रा में डेटा को देखने और समझने में मुश्किल हो सकती है, जो ऑर्डर के संदर्भ में सभी जगह है। वे डेटा को समूहबद्ध करना चाहते हैं, या इसके कुछ वर्गों को किसी अन्य एप्लिकेशन में काट और पेस्ट कर सकते हैं।

उदाहरण के लिए, वे सबसे अधिक वेतन पाने वाले कर्मचारी या सबसे लंबी सेवा वाले कर्मचारी को भी देखना चाह सकते हैं।

VBA में सॉर्ट विधि का उपयोग करके, आप उपयोगकर्ता के लिए आसान सॉर्टिंग की अनुमति देने के लिए विकल्प प्रदान कर सकते हैं।

वीबीए के साथ एक्सेल सॉर्टिंग प्रदर्शित करने के लिए नमूना डेटा

वर्कशीट में दर्ज करने के लिए हमें पहले कुछ नमूना डेटा की आवश्यकता होती है, ताकि कोड VBA के भीतर उपलब्ध सभी सुविधाओं को प्रदर्शित कर सके।

इस डेटा को एक वर्कशीट में कॉपी करें (जिसे 'शीट 1' कहा जाता है) जैसा कि दिखाया गया है।

ध्यान दें कि विभिन्न सेल पृष्ठभूमि रंगों और फ़ॉन्ट रंगों का उपयोग किया गया है, क्योंकि इन्हें सॉर्टिंग पैरामीटर के रूप में भी उपयोग किया जा सकता है। सेल और फॉन्ट रंगों का उपयोग करके छँटाई लेख में बाद में प्रदर्शित की जाएगी। यह भी ध्यान दें कि सेल E3 पर, विभाग का नाम सभी लोअर केस है।

यदि आप सेल और फ़ॉन्ट रंग के आधार पर छँटाई के उदाहरणों का उपयोग नहीं करना चाहते हैं तो आपको सेल इंटीरियर और फ़ॉन्ट रंगों की आवश्यकता नहीं है।

VBA सॉर्ट के लिए मैक्रो रिकॉर्ड करना

छँटाई के लिए VBA कोड काफी जटिल हो सकता है, और कभी-कभी यह एक अच्छा विचार हो सकता है कि Excel के सामने के छोर पर सॉर्ट किया जाए और यह दिखाने के लिए मैक्रो रिकॉर्ड किया जाए कि कोड कैसे काम करता है।

दुर्भाग्य से, रिकॉर्डिंग फ़ंक्शन बड़ी मात्रा में कोड उत्पन्न कर सकता है क्योंकि यह लगभग हर उपलब्ध पैरामीटर को सेट करता है, भले ही कई मापदंडों के लिए डिफ़ॉल्ट मान आपके सॉर्ट ऑपरेशन के लिए स्वीकार्य हों।

हालांकि, यह आपको वीबीए सॉर्ट कोड लिखने में क्या शामिल है, इसका एक बहुत अच्छा विचार देता है, और एक फायदा यह है कि रिकॉर्ड किया गया कोड हमेशा आपके लिए काम करेगा। आपके अपने कोड को ठीक से काम करने के लिए परीक्षण और डिबगिंग की आवश्यकता हो सकती है।

याद रखें कि वीबीए में किए गए एक ऑपरेशन के लिए, कोई पूर्ववत सुविधा नहीं है, इसलिए अपने सॉर्टिंग कोड को लिखना शुरू करने से पहले किसी अन्य वर्कशीट पर सारणीबद्ध डेटा की प्रतिलिपि बनाना एक अच्छा विचार है।

एक उदाहरण के रूप में, यदि आपने ऊपर दिए गए नमूना डेटा पर कर्मचारी द्वारा छँटाई करते हुए एक सरल सॉर्ट किया है, तो रिकॉर्डिंग निम्नलिखित कोड उत्पन्न करेगी:

123456789101112131415161718 सब मैक्रो1 ()रेंज ("ए 1: ई 6")। चुनें:ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A2:A6"), _सॉर्टऑन:=xlSortOnValues, ऑर्डर:=xlआरोही, डेटाऑप्शन:=xlSortNormalActiveWorkbook.Worksheets ("शीट 1") के साथ। सॉर्ट करें.सेटरेंज रेंज ("ए 1: ई 6")हैडर = xlहाँ.मैचकेस = झूठाओरिएंटेशन = xlTopToBottom.SortMethod = xlPinYin।लागू करनाके साथ समाप्त करनाअंत उप

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

हालाँकि, यदि आप अपने कोड को समझने योग्य और अधिक सुरुचिपूर्ण बनाना चाहते हैं, तो अन्य विकल्प उपलब्ध हैं।

सिंगल लेवल सॉर्ट करने के लिए वीबीए कोड

यदि आप मैक्रो रिकॉर्ड करते समय पहले की तरह ही कर्मचारी के आधार पर नमूना कोड को सॉर्ट करना चाहते हैं, तो कोड बहुत सरल है:

1234567 सब सिंगललेवलसॉर्ट ()वर्कशीट्स ("शीट 1")। सॉर्ट करें। सॉर्टफिल्ड्स। क्लियररेंज ("ए 1: ई 6")। सॉर्ट की 1: = रेंज ("ए 1"), हैडर: = xlहाँअंत उप

रिकॉर्ड किए गए कोड की तुलना में इसे समझना कहीं अधिक आसान है क्योंकि यह डिफ़ॉल्ट स्वीकार करता है, उदाहरण के लिए, आरोही क्रमबद्ध करें, इसलिए पैरामीटर को डिफ़ॉल्ट मानों पर सेट करने की कोई आवश्यकता नहीं है। यह मानता है कि आपने पहले 'क्लियर' स्टेटमेंट का इस्तेमाल किया है।

प्रारंभ में 'क्लियर' विधि का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि उस वर्कशीट के लिए हर सॉर्ट पैरामीटर डिफ़ॉल्ट मानों पर वापस सेट हो। हो सकता है कि उपयोगकर्ता ने पहले पैरामीटर को अलग-अलग मानों पर सेट किया हो, या वीबीए में पहले के सॉर्ट ने उन्हें बदल दिया हो। छँटाई करते समय एक डिफ़ॉल्ट स्थिति से शुरू करना महत्वपूर्ण है, अन्यथा आप आसानी से गलत परिणामों के साथ समाप्त हो सकते हैं।

क्लियर विधि हेडर पैरामीटर को रीसेट नहीं करती है, और इसे अपने कोड में शामिल करने की सलाह दी जाती है, अन्यथा एक्सेल कोशिश कर सकता है और अनुमान लगा सकता है कि हेडर पंक्ति मौजूद है या नहीं।

नमूना डेटा के विरुद्ध इस कोड को चलाएँ और आपकी कार्यपत्रक इस तरह दिखेगी:

बहु-स्तरीय सॉर्ट करने के लिए VBA कोड

आप अपने कोड में जितने आवश्यक हो उतने सॉर्टिंग स्तर जोड़ सकते हैं। मान लीजिए कि आप पहले विभाग द्वारा और फिर प्रारंभ तिथि के अनुसार, लेकिन विभाग के लिए आरोही क्रम में और प्रारंभ तिथि के लिए अवरोही क्रम में क्रमबद्ध करना चाहते हैं:

12345678 सब मल्टीलेवलसॉर्ट ()वर्कशीट्स ("शीट 1")। सॉर्ट करें। सॉर्टफिल्ड्स। क्लियररेंज ("ए 1: ई 6")। सॉर्ट की 1: = रेंज ("ई 1"), की 2: = रेंज ("सी 1"), हैडर: = एक्सएल हां, _आदेश1:=xlआरोही, क्रम2:=xlअवरोहीअंत उप

ध्यान दें कि सॉर्ट स्टेटमेंट (Key1 और Key2) में अब दो कुंजियाँ हैं। Key1 (डिपार्टमेंट कॉलम E) को सबसे पहले सॉर्ट किया जाता है और फिर Key2 (स्टार्ट डेट कॉलम C) को पहले सॉर्ट के आधार पर सॉर्ट किया जाता है।

दो ऑर्डर पैरामीटर भी हैं। ऑर्डर1 कुंजी1 (विभाग) से संबद्ध है और ऑर्डर2 कुंजी2 (आरंभ तिथि) से संबद्ध है। यह सुनिश्चित करना महत्वपूर्ण है कि चाबियां और आदेश एक दूसरे के साथ कदम से कदम मिलाकर रखे जाते हैं।

नमूना डेटा के विरुद्ध इस कोड को चलाएँ और आपकी कार्यपत्रक इस तरह दिखेगी:

विभाग कॉलम (ई) आरोही क्रम में है, और प्रारंभ तिथि कॉलम (सी) अवरोही क्रम में है।

जेन हाफक्रे (पंक्ति 3) और जॉन सदरलैंड (पंक्ति 4) को देखते हुए इस प्रकार का प्रभाव सबसे अधिक ध्यान देने योग्य है। वे दोनों वित्त में हैं लेकिन जेन हाफक्रे जॉन सदरलैंड से पहले शुरू हुआ और तारीखों को अवरोही क्रम में दिखाया गया है।

यदि सारणीबद्ध डेटा की सीमा किसी भी लम्बाई की हो सकती है, तो आप सॉर्ट रेंज को परिभाषित करने के लिए प्रयुक्त रेंज ऑब्जेक्ट का उपयोग कर सकते हैं। यह केवल तभी काम करेगा जब वर्कशीट पर केवल सारणीबद्ध डेटा होगा क्योंकि डेटा के बाहर कोई भी मान पंक्तियों और स्तंभों की संख्या के लिए गलत परिणाम देगा।

1234567 सब मल्टीलेवलसॉर्ट ()वर्कशीट्स ("शीट 1")। सॉर्ट करें। सॉर्टफिल्ड्स। क्लियरवर्कशीट्स ("शीट 1")। यूज्डरेंज। सॉर्ट की 1: = रेंज ("ई 1"), की 2: = रेंज ("सी 1"), हैडर: = एक्सएल हां, _आदेश1:=xlआरोही, क्रम2:=xlअवरोहीअंत उप

यदि आप सॉर्ट रेंज को परिभाषित करने के लिए 'एंड (xlDown)' विधि का उपयोग करते हैं तो यह समस्या को रोकता है। यदि डेटा के बीच में कोई रिक्त कक्ष है, तो रिक्त कक्ष के बाद कुछ भी शामिल नहीं किया जाएगा, जबकि UseRange कार्यपत्रक में अंतिम सक्रिय कक्ष में चला जाता है।

सेल रंग द्वारा छँटाई

एक्सेल 2007 के बाद से, सेल के बैकग्राउंड कलर के आधार पर छाँटना अब संभव है, जो VBA में आपके सॉर्ट कोड को डिज़ाइन करते समय अत्यधिक लचीलापन प्रदान करता है।

123456789101112 सब सिंगललेवलसॉर्टबायसेलकलर ()वर्कशीट्स ("शीट 1")। सॉर्ट करें। सॉर्टफिल्ड्स। क्लियरActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A2:A6"), _सॉर्टऑन:=xlSortOnCellColor, ऑर्डर:=xlआरोही, डेटाऑप्शन:=xlSortNormalActiveWorkbook.Worksheets ("शीट 1") के साथ। सॉर्ट करें.सेटरेंज रेंज ("ए 1: ई 6")।लागू करनाके साथ समाप्त करनाअंत उप

यह कोड सेल बैकग्राउंड कलर के आधार पर सैंपल डेटा रेंज (A2:A6) को सॉर्ट करेगा। ध्यान दें कि अब 'सॉर्टऑन' नामक एक अतिरिक्त पैरामीटर है जिसमें 'xlSortOnCellColor' का मान है।

ध्यान दें कि 'सॉर्टऑन' पैरामीटर का उपयोग केवल वर्कशीट ऑब्जेक्ट द्वारा किया जा सकता है, रेंज ऑब्जेक्ट द्वारा नहीं।

इस वजह से कोड सेल मानों का उपयोग करने वाले सॉर्ट की तुलना में अधिक जटिल है।

यह कोड सॉर्ट के लिए एक कुंजी मान का उपयोग करता है जो डेटा की पूरी श्रृंखला को कवर करता है लेकिन आप अलग-अलग कॉलम को पृष्ठभूमि रंग सॉर्ट के लिए कुंजी के रूप में निर्दिष्ट कर सकते हैं, और पहले दिखाए गए अनुसार कई स्तरों का उपयोग कर सकते हैं।

इस कोड को चलाने के बाद अब आपकी वर्कशीट कुछ इस तरह दिखेगी:

फ़ॉन्ट रंग द्वारा छँटाई

एक्सेल वीबीए में सॉर्ट फ़ंक्शन और भी अधिक लचीलापन प्रदान करता है जिसमें आप फ़ॉन्ट रंगों के आधार पर सॉर्ट कर सकते हैं:

1234567891011121314 सब सिंगललेवलसॉर्टबायफॉन्टकलर ()वर्कशीट्स ("शीट 1")। सॉर्ट करें। सॉर्टफिल्ड्स। क्लियरActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("A2:A6"), _xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0)ActiveWorkbook.Worksheets ("शीट 1") के साथ। सॉर्ट करें.सेटरेंज रेंज ("ए 1: ई 6")हैडर = xlहाँओरिएंटेशन = xlTopToBottom।लागू करनाके साथ समाप्त करनाअंत उप

सेल बैकग्राउंड कलर की तुलना में फॉन्ट कलर द्वारा सॉर्ट करने का कोड कहीं अधिक जटिल है। 'सॉर्टऑन' पैरामीटर अब 'xlSortOnFontColor' का मान रखता है।

ध्यान दें कि आपको ओरिएंटेशन को 'xlTopToBottom' के रूप में निर्दिष्ट करना होगा और आपको सॉर्ट करने के लिए एक रंग निर्दिष्ट करना होगा। यह आरजीबी शब्दों (लाल, हरा, काला) में निर्दिष्ट है, जिसमें 0 से 255 तक के मान हैं।

नमूना डेटा के विरुद्ध इस कोड को चलाने के बाद, आपकी कार्यपत्रक अब इस तरह दिखाई देगी:

VBA में रंगों का उपयोग करके सॉर्ट करना बहु-स्तरीय सॉर्ट की तुलना में कहीं अधिक जटिल है, लेकिन यदि आपका सॉर्ट कोड काम नहीं करेगा (जो तब हो सकता है जब कोई पैरामीटर गुम हो या आपने कोड सही ढंग से दर्ज नहीं किया हो) तो आप हमेशा रिकॉर्डिंग पर वापस आ सकते हैं एक मैक्रो और रिकॉर्ड किए गए कोड को आपके वीबीए में एकीकृत करना।

VBA छँटाई में अन्य मापदंडों का उपयोग करना

ऐसे कई वैकल्पिक पैरामीटर हैं जिनका उपयोग आप अपने VBA कोड में अपने प्रकार को अनुकूलित करने के लिए कर सकते हैं।

क्रमबद्ध करें

सॉर्टऑन चुनता है कि सॉर्ट सेल मान, सेल पृष्ठभूमि रंग, या सेल फ़ॉन्ट रंगों का उपयोग करेगा या नहीं। डिफ़ॉल्ट सेटिंग सेल मान है।

1 सॉर्टऑन = xlSortOnValues

आदेश

आदेश चुनता है कि सॉर्ट आरोही या अवरोही क्रम में किया जाएगा या नहीं। डिफ़ॉल्ट आरोही है।

1 आदेश = xlआरोही

डेटा विकल्प

डेटाऑप्शन चुनता है कि टेक्स्ट और नंबर कैसे सॉर्ट किए जाते हैं। पैरामीटर xlSortNormal संख्यात्मक और टेक्स्ट डेटा को अलग-अलग सॉर्ट करता है। पैरामीटर xlSortTextAsNumbers टेक्स्ट को सॉर्ट के लिए संख्यात्मक डेटा के रूप में मानता है। डिफ़ॉल्ट xlSortNormal है।

1 डेटाऑप्शन = xlSortNormal

हैडर

शीर्षलेख चुनता है कि सारणीबद्ध डेटा श्रेणी में शीर्षलेख पंक्ति है या नहीं। यदि कोई शीर्ष लेख पंक्ति है, तो आप इसे क्रम में शामिल नहीं करना चाहते हैं।

पैरामीटर मान xlYes, xlNo, और xlYesNoGuess हैं। xlYesNoGuess यह निर्धारित करने के लिए एक्सेल पर छोड़ देता है कि क्या कोई हेडर पंक्ति है, जो आसानी से असंगत परिणाम दे सकती है। इस मान का उपयोग करने की अनुशंसा नहीं की जाती है।

डिफ़ॉल्ट मान XNo है (डेटा के भीतर कोई हेडर पंक्ति नहीं)। आयातित डेटा के साथ, आमतौर पर एक हेडर पंक्ति होती है, इसलिए सुनिश्चित करें कि आपने इस पैरामीटर को xlYes पर सेट किया है।

1 हैडर = xlहाँ

माचिस की डिबिया

यह पैरामीटर निर्धारित करता है कि सॉर्ट केस-संवेदी है या नहीं। विकल्प मान सही या गलत हैं। यदि मान गलत है, तो लोअर केस वैल्यू को अपर केस वैल्यू के समान माना जाता है। यदि मान सही है, तो सॉर्ट, सॉर्ट के भीतर अपर और लोअर केस मानों के बीच अंतर दिखाएगा। मूल मूल्य गलत है।

1 मैचकेस = झूठा

अभिविन्यास

यह पैरामीटर निर्धारित करता है कि सॉर्ट नीचे की ओर पंक्तियों के माध्यम से, या सभी स्तंभों में होगा। डिफ़ॉल्ट मान xlTopToBottom है (पंक्तियों के माध्यम से क्रमबद्ध करें)। यदि आप क्षैतिज रूप से क्रमबद्ध करना चाहते हैं तो आप xlLeftToRight का उपयोग कर सकते हैं। xlRows और xlColumns जैसे मान इस पैरामीटर के लिए काम नहीं करते हैं।

1 ओरिएंटेशन = xlTopToBottom

क्रमबद्ध विधि

यह पैरामीटर केवल चीनी भाषाओं को सॉर्ट करने के लिए उपयोग किया जाता है। इसके दो मान हैं, xlPinYin और xlStroke। xlPinYin डिफ़ॉल्ट मान है।

xlPinYin वर्णों के लिए ध्वन्यात्मक चीनी सॉर्ट क्रम का उपयोग करता है। xlStroke प्रत्येक वर्ण में स्ट्रोक की मात्रा के अनुसार क्रमबद्ध करता है।

यदि आप एक प्रकार का मैक्रो रिकॉर्ड करते हैं, तो यह पैरामीटर हमेशा कोड में शामिल किया जाएगा, और आपने अच्छी तरह से सोचा होगा कि इसका क्या मतलब है। हालाँकि, जब तक आप चीनी में डेटा के साथ काम नहीं कर रहे हैं, यह बहुत कम उपयोग का है।

1 SortMethod = xlPinYin

सारणीबद्ध डेटा को सॉर्ट करने के लिए डबल-क्लिक ईवेंट का उपयोग करना

माइक्रोसॉफ्ट ने वीबीए के लिए सॉर्ट विधियों में शामिल सभी कार्यक्षमताओं में, कॉलम हेडर पर डबल-क्लिक करने और उस विशेष कॉलम के आधार पर संपूर्ण सारणीबद्ध डेटा को सॉर्ट करने का एक सरल साधन शामिल नहीं किया था।

यह वास्तव में उपयोगी सुविधा है, और इसे करने के लिए कोड लिखना आसान है।

12345678910111213141516171819202122232425262728293031323334 निजी उप वर्कशीट_पहले डबलक्लिक (ByVal लक्ष्य सीमा के रूप में, बूलियन के रूप में रद्द करें)'मान लिया जाता है कि डेटा सेल A1 से शुरू होता है''चयनित लक्ष्य कॉलम और _ की अधिकतम कॉलम और पंक्ति को कैप्चर करने के लिए तीन चर बनाएं'सारणीबद्ध डेटाडिम कर्नल अस इंटीजर, आरसीओएल अस लॉन्ग, आरओ अस लॉन्ग'जांचें कि उपयोगकर्ता ने शीर्ष लेख पंक्ति - पंक्ति 1 पर डबल-क्लिक किया है अन्यथा उप से बाहर निकलेंयदि लक्ष्य.पंक्ति १ तो उप से बाहर निकलें'UsedRange' ऑब्जेक्ट का उपयोग करके सारणीबद्ध डेटा श्रेणी में अधिकतम पंक्तियों को कैप्चर करेंRCol = ActiveSheet.UsedRange.Columns.Count'UsedRange' ऑब्जेक्ट का उपयोग करके सारणीबद्ध डेटा श्रेणी में अधिकतम कॉलम कैप्चर करेंRrow = ActiveSheet.UsedRange.Rows.Count'जांचें कि उपयोगकर्ता ने सारणीबद्ध डेटा श्रेणी के बाहर किसी कॉलम पर डबल-क्लिक नहीं किया है'यदि लक्ष्य। कॉलम> आरसीओएल तो उप से बाहर निकलें'उस कॉलम को कैप्चर करें जिस पर उपयोगकर्ता ने डबल-क्लिक किया हैकर्नल = लक्ष्य। कॉलम'पिछले सॉर्ट पैरामीटर को साफ़ करें'ActiveSheet.Sort.SortFields.Clear'UsedRange' ऑब्जेक्ट से अधिकतम पंक्तियों और स्तंभों द्वारा परिभाषित सारणीबद्ध श्रेणी को क्रमबद्ध करें'सॉर्ट कुंजी के रूप में उपयोगकर्ता द्वारा डबल-क्लिक किए गए कॉलम का उपयोग करके सारणीबद्ध डेटा को सॉर्ट करेंActiveSheet.Range(Cells(1, 1), Cells(RCol, RRow)).Sort Key1:= Cells(1, Col), Header:=xlYes'सेल A1 का चयन करें - यह सुनिश्चित करने के लिए है कि सॉर्ट करने के बाद उपयोगकर्ता संपादन मोड में नहीं बचा है _' पूरा किया हुआActiveSheet.Range("A1").Selectअंत उप

इस कोड को सारणीबद्ध डेटा वाली शीट पर डबल-क्लिक ईवेंट पर रखने की आवश्यकता है। आप प्रोजेक्ट एक्सप्लोरर विंडो (वीबीई स्क्रीन के ऊपरी बाएं कोने) में वर्कशीट नाम पर क्लिक करके और फिर कोड विंडो पर पहले ड्रॉप डाउन में 'वर्कशीट' का चयन करके ऐसा करते हैं। दूसरे ड्रॉप डाउन में 'BeforeDoubleClick' चुनें, और फिर आप अपना कोड दर्ज कर सकते हैं।

ध्यान दें कि कोड के अंत में कर्सर को सेल A1 पर ले जाने के अलावा इस कोड में कोई नाम, श्रेणी या सेल संदर्भ हार्डकोड नहीं किया गया है। कोड को सेल निर्देशांक से आवश्यक सभी जानकारी प्राप्त करने के लिए डिज़ाइन किया गया है, जिस पर उपयोगकर्ता ने डबल-क्लिक किया है और सारणीबद्ध डेटा श्रेणी का आकार।

इससे कोई फर्क नहीं पड़ता कि सारणीबद्ध डेटा रेंज कितनी बड़ी है। कोड अभी भी सभी आवश्यक जानकारी लेगा और इसका उपयोग आपकी कार्यपुस्तिका के भीतर कहीं भी रखे गए डेटा पर बिना मूल्यों में हार्डकोड के किया जा सकता है।

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

कोई भी उपयोगकर्ता इस नई सॉर्टिंग कार्यक्षमता से उपयुक्त रूप से प्रभावित होगा!

VBA का उपयोग करके सॉर्टिंग फ़ंक्शन का विस्तार करना

Microsoft ने मापदंडों की एक विस्तृत श्रृंखला का उपयोग करके छँटाई में जबरदस्त लचीलेपन की अनुमति दी है। हालाँकि, VBA के भीतर, आप इसे और आगे ले जा सकते हैं।

मान लीजिए कि आप अपने डेटा के शीर्ष पर बोल्ड फ़ॉन्ट वाले किसी भी मान को सॉर्ट करना चाहते हैं। एक्सेल में ऐसा करने का कोई तरीका नहीं है, लेकिन आप इसे करने के लिए वीबीए कोड लिख सकते हैं:

123456789101112131415161718192021222324252627282930313233343536373839404142 सब सॉर्टबायबॉल्ड ()'सारणीबद्ध डेटा के लिए पंक्तियों और स्तंभों की संख्या रखने के लिए चर बनाएँ'मंद आरओ लंबे समय तक, आरसीओएल जितना लंबा, एन उतना लंबा'स्क्रीन अपडेटिंग बंद करें ताकि उपयोगकर्ता यह न देख सके कि क्या हो रहा है - वे देख सकते हैं _' मूल्यों को बदला जा रहा है और आश्चर्य है कि क्योंएप्लिकेशन.स्क्रीनअपडेटिंग = गलत'सारणीबद्ध डेटा श्रेणी में स्तंभों की संख्या कैप्चर करें'RCol = ActiveSheet.UsedRange.Columns.Count'सारणीबद्ध डेटा श्रेणी के भीतर पंक्तियों की संख्या कैप्चर करें'Rrow = ActiveSheet.UsedRange.Rows.Count'हेडर पंक्ति को अनदेखा करते हुए सारणीबद्ध डेटा श्रेणी में सभी पंक्तियों के माध्यम से पुनरावृति करें'N = 2 से Rrow . के लिए'यदि किसी सेल में बोल्ड फॉन्ट है तो सेल वैल्यू के सामने एक अग्रणी 0 मान रखेंअगर ActiveSheet.Cells(N, 1).Font.Bold = True तबActiveSheet.Cells(N, 1).Value = "0" और ActiveSheet.Cells(N, 1).Valueअगर अंतअगला नहीं'किसी भी पिछले सॉर्ट पैरामीटर को साफ़ करें'ActiveSheet.Sort.SortFields.Clear'सारणीबद्ध डेटा श्रेणी को क्रमबद्ध करें। अग्रणी 0 मान वाले सभी मान शीर्ष पर चले जाएंगेActiveSheet.Range(Cell(1, 1), Cells(RCol, RRow)).Sort Key1:= Cells(1, 1), Header:=xlYes'हेडर पंक्ति को अनदेखा करते हुए सारणीबद्ध डेटा श्रेणी में सभी पंक्तियों के माध्यम से पुनरावृति करें'N = 2 से Rrow . के लिए'यदि किसी सेल में बोल्ड फॉन्ट है तो सेल वैल्यू से अग्रणी 0 मान को _ तक हटा दें' मूल मूल्यों को पुनर्स्थापित करेंअगर ActiveSheet.Cells(N, 1).Font.Bold = True तबActiveSheet.Cells(N, 1).Value = Mid(ActiveSheet.Cells(N, 1).Value, 2)अगर अंतअगला नहीं'स्क्रीन अपडेट को वापस चालू करें'एप्लिकेशन.स्क्रीनअपडेटिंग = सहीअंत उप

कोड 'यूज्डरेंज' ऑब्जेक्ट का उपयोग करके सारणीबद्ध डेटा रेंज के आकार को काम करता है और फिर उसके भीतर सभी पंक्तियों के माध्यम से पुनरावृति करता है। जब एक बोल्ड फॉन्ट मिलता है, तो सेल वैल्यू के सामने एक अग्रणी शून्य रखा जाता है।

फिर एक प्रकार का होता है। जैसा कि क्रम आरोही क्रम में है, शून्य के सामने कुछ भी सूची के शीर्ष पर जाएगा।

कोड तब सभी पंक्तियों के माध्यम से पुनरावृत्त होता है और प्रमुख शून्य को हटा देता है, डेटा को उसके मूल मानों पर पुनर्स्थापित करता है।

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

आप साइट के विकास में मदद मिलेगी, अपने दोस्तों के साथ साझा करने पेज

wave wave wave wave wave