VBA सॉर्ट - एक्सेल टिप्स

विषय - सूची

डेटा को सॉर्ट करने के लिए एक्सेल VBA मैक्रो। मुझे पसंद नहीं है कि मैक्रो रिकॉर्डर कैसे छँटाई के लिए अतिरिक्त कोड बनाता है। एक्सेल VBA में छंटनी सरल होनी चाहिए। कॉलम को सॉर्ट करने के लिए कोड की एक पंक्ति, जिस तरह से (आरोही या अवरोही) और एक हेडर है।

वीडियो देखेंा

  • एक्सेल मैक्रो रिकॉर्डर रिकॉर्डिंग सॉर्टिंग के साथ एक अच्छा काम नहीं करता है।
  • बशर्ते आपके डेटा को Ctrl + * (वर्तमान क्षेत्र के रूप में जाना जाता है) का उपयोग करके चुना जा सकता है
  • बशर्ते आप रंग या आइकन या तीन से अधिक स्तरों द्वारा छँटाई नहीं कर रहे हैं
  • पुराने स्कूल रेंज () का उपयोग करें। एक्सेल में CurrentRegion.Sort विधि

वीडियो ट्रांसक्रिप्ट

MrExcel पॉडकास्ट, एपिसोड 2093 से एक्सेल सीखें: VBA के साथ छंटनी

अरे, नेटकास्ट में आपका स्वागत है, मैं बिल जेलन हूं। हंट्सविले में जेम्स से आज का सवाल। जेम्स, मैंने डेटा को सॉर्ट करने की क्रिया को रिकॉर्ड करने के लिए मैक्रो रिकॉर्डर का उपयोग किया। तो चलिए बताते हैं कि जेम्स को इस डेटा को सेक्टर और कस्टमर्स द्वारा सॉर्ट करने की जरूरत थी। तो आप यहाँ पर व्यू टैब, मैक्रोज़, रिकॉर्ड न्यू मैक्रो, सॉर्टमेयपोर्ट, शॉर्टकट की Ctrl - मैं वहां शिफ्ट + एस टाइप करेंगे, और ओके पर क्लिक करेंगे। ठीक है, तो फिर यहां से हम करते हैं: डेटा, सॉर्ट करें, और हम यह कहना चाहते हैं कि हम सेक्टर द्वारा सॉर्ट करना चाहते हैं और फिर ग्राहक द्वारा एक स्तर और सॉर्ट जोड़ें, और ठीक पर क्लिक करें। निचले बाएं कोने में हम स्टॉप रिकॉर्डिंग पर क्लिक करते हैं। ठीक है, तो यह वहाँ है। लगता है काम किया है, है ना?

लेकिन यहाँ समस्या यह है: कल आप अधिक डेटा या कम डेटा रखने जा रहे हैं या, आप जानते हैं, जो भी हो। और वह रिकॉर्डेड मैक्रों सिर्फ भयानक है। चलो एक नज़र डालते हैं, मैं Alt + F8 करूँगा और SortMyReport पर एक नज़र डालूंगा, इसे संपादित करेंगे। ठीक है, और यह वह सब कुछ है जिसे उन्होंने SortFields.Clear में रिकॉर्ड किया है, और फिर वे SortFields के साथ एक नया प्रकार सेट करते हैं। जोड़ें और वे हार्ड-कोडित हैं, और 568 पंक्तियाँ, और सभी सामान हैं।

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

अब, मैं वापस एक्सेल में जा रहा हूँ। इस पुराने स्कूल में काम करने के लिए, ठीक है, के लिए नियम हैं। हर कॉलम के ऊपर हेडिंग: हेडिंग एक पंक्ति में होनी चाहिए, दो पंक्तियों में नहीं। यदि आपके पास वहाँ शीर्षक हैं और वहाँ शीर्षक रखना ठीक है। आपको अपने शीर्षकों और पहले शीर्षक के बीच एक पूरी तरह से रिक्त पंक्ति की आवश्यकता है। यदि आपके पास दाईं ओर नोट हैं: आपकी पत्नी किराने की सूची के साथ कहती है, “अरे, मधु, घर के रास्ते पर रुक जाओ। दूध, अंडे और वोदका प्राप्त करें। ” आपके डेटा और उस के बीच एक पूरी तरह से रिक्त कॉलम होना चाहिए। और अगर तल पर बॉयलरप्लेट नोट हैं, तो सुनिश्चित करें कि डेटा के अंतिम बिट और उन नोटों के बीच एक पूरी तरह से खाली पंक्ति है।

मेरा पूरा लक्ष्य यह है कि हमें किसी एक सेल में आने में सक्षम होना चाहिए: शीर्ष बाएं कोने वाला सेल इस डेटा को दबाएगा और Ctrl + * दबाएगा और यह डेटा को सॉर्ट करने का चयन करेगा। अब, मैं Ctrl + दबाने जा रहा हूँ। जो हमें इस कोने तक ले जाता है और फिर Ctrl +। हमें नीचे-दाएं कोने, Ctrl + पर ले जाएगा। हमें नीचे-बाएँ कोने में ले जाता है। ठीक है, इसलिए यदि Ctrl + * सही ढंग से आपके डेटा का चयन करेगा तो सब कुछ बहुत अच्छा है। यदि आप कॉलम H में अपनी किराने की सूची डालते हैं और हम देखते हैं कि हम यहां आए हैं और Ctrl + *, तो अब, हम किराने की सूची को चीज़ के हिस्से के रूप में क्रमबद्ध कर रहे हैं और आपकी किराने की सूची खराब हो जाएगी। या हम पूर्ववत करेंगे: यदि यह पंक्ति यहां नहीं है, तो अब हम Ctrl + * करते हैं, हम देखते हैं- अब वे अव्यवस्थित होंगे क्योंकि उनके पास अब कोई शीर्षक नहीं है, ठीक है?

इसलिए, यदि आप मेरे कोड का उपयोग करने जा रहे हैं, तो सुनिश्चित करें कि ये सभी नियम सही हैं: मेरा रंग नहीं छंट रहा है, मेरा आइकन नहीं छँटाई जा रही है, 3 या उससे कम सॉर्ट स्तर। पूर्ववत, ठीक है। इसलिए यहां हम जानते हैं: हम जानते हैं कि हर दिन हमारा डेटा A5 में शुरू होने वाला है। अगर हमें पता नहीं है कि हमारे पास कितनी पंक्तियाँ हैं या कितनी-कितनी अच्छी तरह से कितने कॉलम हैं। मैं ऐसी स्थिति की कल्पना नहीं कर सकता जहाँ स्तंभ परस्पर जुड़े हों लेकिन निश्चित रूप से पंक्तियों की संख्या बदलने वाली है। तो Alt + F11, हम बस उस टॉप-लेफ्ट कॉर्नर सेल से शुरू करने जा रहे हैं। तो रेंज, मेरे मामले में "A5" है। CurrentRegion। वर्तमान क्षेत्र यह भयानक भवन संपत्ति है जो कहती है कि हम Ctrl + Shift + * और जो कुछ भी शामिल है उसे दबाने के लिए जा रहे हैं। और हम करते हैं। .Sort, ठीक है।

अब, यहाँ बात है। यदि आप एक-स्तरीय सॉर्ट करना चाहते हैं तो आसान है: Key1: =। : = और हम सिर्फ यह कहते हैं कि यह रेंज होने जा रहा है - ओह मैं भूल गया कि यह क्या है। यह सेक्टर था, सेक्टर कहाँ है? सेक्टर कॉलम सी में है। तो मेरे मामले में C5, रेंज ("C5") और फिर, ऑर्डर 1: = xlAscending। मैंने वहां डाउन एरो की दबाया, और फिर टैब। अब ठीक है, मैं सही करने के लिए बाहर जा सकता है, लेकिन मैं ऐसा नहीं करने जा रहा हूँ। मैं एक नई लाइन पर जा रहा हूँ, इसलिए एक नई लाइन पर जाने के लिए अंडरस्कोर, कोड की यह लाइन जारी है, ठीक है? और अगर मेरे पास दूसरा स्तर है: Key2: = और इस मामले में मैं ग्राहक द्वारा छांटना चाहता हूं जो कि कॉलम D में है, तो D5। और फिर, ऑर्डर 2: xlAscending। सुंदर।

मेरे पास तीसरे स्तर का प्रकार नहीं है, लेकिन यदि आपने किया है, तो यह Key3 और फिर आदेश 3 होगा। और फिर यह अगले एक, जो आपको करना है वह हैडर, ठीक है? तो, हैडर: = xlGuess कि तुम कहाँ मुसीबत का एक बिल्ली हो रही है। और इसलिए हम वहाँ xlYes कहने जा रहे हैं, निश्चित रूप से एक हैडर के रूप में। पुराने दिनों में भी, मैक्रो रिकॉर्डर xlGuess का उपयोग करेगा। मुझे लगता है कि एक्सेल से नफरत है।

यह बात है। कोड की एक पंक्ति, आपको बस इतना करना है और यह अधिक पंक्तियों, कम पंक्तियों के साथ काम करेगा। यह एक सुंदर, सुंदर चीज है। ठीक है, इसलिए हम यहाँ एक्सेल में आने वाले हैं। Ctrl + Shift + S अभी भी वह चीज़ है जिसे असाइन किया गया है। अब यह- यदि आपने केवल VBA पर स्विच किया है और आप स्वयं टाइप करते हैं, तो आप Alt + F8 पर जा सकते हैं, अपने मैक्रो का नाम ढूंढ सकते हैं, विकल्प पर क्लिक करें और वहां Ctrl + Shift + S टाइप करें या हम इसे एक को भी असाइन कर सकते हैं क्विक एक्सेस टूलबार पर यहां शॉर्टकट कुंजी। राइट क्लिक, क्विक एक्सेस टूलबार कस्टमाइज़ करें जहां मैं हमारे मैक्रोज़ से चुनता हूं। मेरे पास एक मैक्रों है, जिसे SortMyReport कहा जाता है, ऐड पर क्लिक करेंगे - मुझे वहां थोड़ा फ्लोचार्ट से नफरत है। हम इसे संशोधित करेंगे और मैं वहाँ से Z स्थिति के लिए किसी प्रकार का होना पसंद करूंगा, लेकिन निश्चित रूप से वहाँ नहीं है। शायद वह तीर जो जानता है, जो जानता है, बस कुछ भी चुनता है।जादू 8-गेंद, मुझे नहीं पता। मैं यहाँ इस छोटे आदमी को चुनने जा रहा हूँ, ठीक क्लिक करें, ठीक क्लिक करें। ठीक है, इसलिए अब हमारे डेटा को दिनांक के अनुसार क्रमबद्ध किया गया है, मैं चुनता हूं - और इससे कोई फर्क नहीं पड़ता कि मैं क्या चुनता हूं। यह हमेशा पीछे जा रहा है और इसे A5 से सॉर्ट करता है, मैं छोटे आदमी पर क्लिक करता हूं और मेरा डेटा अब ग्राहक द्वारा सेक्टर के भीतर, सेक्टर द्वारा सॉर्ट किया जाता है। यह महान काम करता है, ठीक है?

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

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

ठीक है, आज के लिए सरल रैप-अप: एक्सेल मैक्रो रिकॉर्डर रिकॉर्डिंग के साथ एक अच्छा काम नहीं करता है, छंटनी: बशर्ते आपके डेटा को Ctrl + * का उपयोग करके चुना जा सकता है जिसे वर्तमान क्षेत्र के रूप में जाना जाता है, बशर्ते आप रंग या आइकन की तरह छंटनी नहीं कर रहे हों या तीन से अधिक स्तर, बस पुराने स्कूल रेंज का उपयोग करें ()। CurrentRegion.Sort विधि को छाँटने के लिए VBA में।

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

फ़ाइल डाउनलोड करें

यहाँ नमूना फ़ाइल डाउनलोड करें: Podcast2093.xlsm

दिलचस्प लेख...