यह.com पर 19 वां साप्ताहिक एक्सेल टिप है। एक्सेल युक्तियों में से कई में किसी प्रकार की मैक्रो ट्रिक शामिल है। इस सप्ताह, एक्सेल उपयोगकर्ताओं के लिए जिन्होंने कभी मैक्रो नहीं लिखा है, मैं एक प्राइमर पेश करता हूं कि कैसे रिकॉर्ड करना है और फिर एक उपयोगी एक्सेल मैक्रो को अनुकूलित करना है।

मान लें कि आपके पास पता डेटा की 400 पंक्तियाँ हैं जैसे कि बाईं ओर शीर्ष आकृति में दिखाया गया है। नाम फ़ील्ड कॉलम A में है, स्तंभ B में सड़क का पता और स्तंभ C में शहर है।
आपका लक्ष्य डेटा को एकल कॉलम में बदलना है जैसे कि दूसरे आंकड़े में दिखाया गया है।
इस सरल समस्या का उपयोग यह वर्णन करने के लिए किया जाएगा कि कैसे रिकॉर्ड करें, संशोधित करें और फिर एक साधारण मैक्रो चलाएँ।
एक्सेल 95 उपयोगकर्ताओं के लिए: मैक्रो रिकॉर्ड करने के बाद, एक्सेल आपके मैक्रो को आपकी कार्यपुस्तिका में मॉड्यूल 1 नामक शीट पर रख देगा। आप मैक्रो तक पहुंचने के लिए शीट पर क्लिक कर सकते हैं।
हालाँकि इस वर्कशीट में 400 रिकॉर्ड हैं, लेकिन मैक्रो का एक छोटा सा रिकॉर्ड करना चाहता हूं जो सिर्फ पहले पते का ध्यान रखता है। मैक्रो यह मान लेगा कि सेलपॉइंट पहले नाम पर है। यह तीन रिक्त पंक्तियों को सम्मिलित करेगा। यह मूल सेल के नीचे सेल को मूल सेल के दाईं ओर कॉपी करेगा। यह शहर सेल को मूल सेल के तहत सेल 2 पंक्तियों में कॉपी करेगा। इसके बाद सेल पॉइंटर को नीचे ले जाना चाहिए ताकि यह अगले नाम पर हो।
कुंजी इस प्रक्रिया को रिकॉर्ड करने से पहले सोचने की है। मैक्रो रिकॉर्ड करते समय आप बहुत सी गलतियाँ नहीं करना चाहते हैं।
तो, सेल A1 में अपने सेल पॉइंटर को रखें। मेनू पर जाएं और टूल्स> मैक्रो> रिकॉर्ड नया मैक्रो चुनें। रिकॉर्ड मैक्रो संवाद Macro1 के नाम का सुझाव देता है। यह ठीक है, इसलिए ठीक है।
एक्सेल मैक्रो रिकॉर्डर में एक बहुत ही मूर्खतापूर्ण डिफ़ॉल्ट सेटिंग है जिसे आपको इस मैक्रो काम के लिए बिल्कुल बदलना होगा। एक्सेल 95 में, टूल्स> मैक्रो> रिलेटिव रिफरेंस का उपयोग करें एक्सेल 97-2003 में, स्टॉप रिकॉर्डिंग बार पर दूसरे आइकन पर क्लिक करें। आइकन एक छोटी वर्कशीट की तरह दिखता है। C3 में एक लाल सेल A3 में दूसरे लाल सेल को इंगित करता है। आइकन को सापेक्ष संदर्भ कहा जाता है। जब यह आइकन 'चालू' होता है, तो आइकन के आसपास कुछ रंग होता है। आइकन वर्तमान एक्सेल सत्र से अंतिम सेटिंग को याद करता है, इसलिए आपको यह जानने के लिए कि कौन सी विधि चालू है या नहीं, एक-दो बार क्लिक करना होगा। Excel 2007 में, दृश्य - मैक्रोज़ - सापेक्ष संदर्भों का उपयोग करें।
ठीक है, हम जाने के लिए तैयार हैं। इन चरणों का पालन करें:
- सेल B1 में जाने के लिए एक बार डाउन एरो को हिट करें।
- शिफ्ट कुंजी दबाए रखें और पंक्तियों 2, 3, और 4 का चयन करने के लिए नीचे तीर को दो बार मारें
- मेनू से, सम्मिलित करें चुनें, फिर तीन रिक्त पंक्तियों को सम्मिलित करने के लिए पंक्तियों का चयन करें।
- सेल बी 2 में जाने के लिए ऊपर तीर और फिर दायाँ तीर।
- सेल बी 2 को काटने के लिए Ctrl X मारो।
- नीचे तीर, बायाँ तीर मारो, फिर सेल V में पेस्ट करने के लिए Ctrl V।
- ऊपर तीर, दाएँ तीर, दाएँ तीर, Ctrl X, बाएँ तीर, बाएँ तीर, नीचे तीर, नीचे तीर, Ctrl V को C1 को A3 पर ले जाने के लिए।
- डाउन एरो को दो बार मारो ताकि सेल पॉइंटर अब रो ए 5 में अगले नाम पर हो।
- मैक्रो को रिकॉर्ड करने से रोकने के लिए टूलबार पर "स्टॉप रिकॉर्डिंग" आइकन पर क्लिक करें।
ठीक है, आपने अपना पहला मैक्रो रिकॉर्ड किया है। चलो एक नज़र डालते हैं। टूल्स> मैक्रो> मैक्रोज़ पर जाएं। सूची से, Macro1 को हाइलाइट करें और एडिट बटन दबाएँ। आपको कुछ ऐसा दिखना चाहिए जो ऐसा दिखता है।
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select End Sub
अरे, अगर आप एक प्रोग्रामर नहीं हैं, तो शायद बहुत डर लगता है। यह मत होने दो। अगर कुछ ऐसा है जिसे आप नहीं समझते हैं, तो उत्कृष्ट मदद है। कीवर्ड में कहीं भी अपने कर्सर को क्लिक करें और F1 को हिट करें। बशर्ते आपने VBA सहायता फ़ाइल स्थापित की हो, आपको ऑफ़सेट कीवर्ड के लिए सहायता विषय दिखाई देगा। सहायता आपको कथन का वाक्यविन्यास बताती है। यह कहता है कि यह ऑफ़सेट (रोऑफ़सेट, कॉलम्युएफ़सेट) है। अभी भी बहुत स्पष्ट नहीं है? मदद के शीर्ष के पास हरे रेखांकित शब्द "उदाहरण" के लिए देखें। एक्सेल का VBA उदाहरण आपको यह जानने की अनुमति देगा कि क्या चल रहा है। ऑफसेट के उदाहरण में, यह सेल को दो पंक्तियों को सक्रिय करने के लिए कहता है और वर्तमान सेल के दाईं ओर तीन पंक्तियों को, आप उपयोग करेंगे:
ActiveCell.Offset(3, 2).Activate
ठीक है, तो यह एक सुराग है। ऑफसेट फ़ंक्शन एक्सेल स्प्रेडशीट के चारों ओर घूमने का एक तरीका है। इस जानकारी को देखते हुए, आप देख सकते हैं कि मैक्रो क्या कर रहा है। पहला ऑफसेट (1, 0) है, जहां हमने सेलपॉइंट को नीचे A2 में स्थानांतरित किया है। अगला ऑफसेट वह जगह है जहां हम एक पंक्ति (-1 पंक्तियाँ) और 1 से अधिक स्तंभ ले गए थे। आप मैक्रो में कुछ और नहीं समझ सकते हैं, लेकिन यह अभी भी उपयोगी है।
एक्सेल वर्कशीट पर वापस जाएं। अपने सेल पॉइंटर को A5 सेल में रखें। उपकरण> मैक्रो> मैक्रो> मैक्रो 1> रन चुनें। मैक्रो चलता है और आपका दूसरा पता स्वरूपित होता है।
आप कह सकते हैं कि इस पूरी लंबी बड़ी स्ट्रिंग का चयन करना केवल हाथ से प्रारूपित करने से कठिन है। ठीक है, फिर टूल्स> मैक्रो> मैक्रोज़> विकल्प करें। शॉर्टकट बॉक्स में, Ctrl + w इस मैक्रो के लिए शॉर्टकट कुंजी है। ठीक पर क्लिक करें, फिर रद्द करने के साथ मैक्रो संवाद को खारिज कर दें। अब, जब आप Ctrl w मारते हैं, तो मैक्रो चलेगा। आप एकल कीस्ट्रोक में एक पते को प्रारूपित कर सकते हैं।
क्या आप बड़े समय के लिए तैयार हैं? आपके पास कितने पते हैं? मैंने कुछ बार Ctrl वा हिट किया, इसलिए मेरे पास 395 शेष हैं। अपने मैक्रो पर वापस जाएं। हम पूरे मैक्रो कोड को लूप में डालने जा रहे हैं। मैक्रो कोड की पहली पंक्ति से पहले एक नई लाइन डालें जो "Do to activecell.value =" "कहती है। एक लाइन डालें जो एंड सब लाइन से पहले "लूप" कहती है। Do पाश और लूप लाइन के बीच सब कुछ निष्पादित करेगा जब तक कि यह एक रिक्त रेखा में नहीं चलता है। मैक्रो अब इस तरह दिखता है:
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select Loop End Sub
अपनी एक्सेल शीट पर वापस जाएं। अगले नाम पर सेल पॉइंटर लगाएं। Ctrl w को हिट करें और मैक्रो कुछ ही सेकंड में आपके सभी रिकॉर्ड को प्रारूपित कर देगा।
एक्सेल पुस्तकों के लेखक कहते हैं कि आप मैक्रो रिकॉर्ड करके कुछ भी उपयोगी नहीं कर सकते हैं। सच नहीं! जो व्यक्ति 800 बार काटने और चिपकाने वाला था, उसके लिए यह मैक्रो बहुत उपयोगी है। इसे रिकॉर्ड करने और अनुकूलित करने में कुछ मिनट लगे। हां, पेशेवर प्रोग्रामर इंगित करेंगे कि कोड बहुत ही अक्षम है। एक्सेल वहाँ सामान की एक पूरी गुच्छा डालता है कि उसे वहाँ डालने की ज़रूरत नहीं है। हां, यदि आपको पता था कि आप क्या कर रहे हैं, तो आप उसी कार्य को आधी रेखाओं के साथ पूरा कर सकते हैं जो 3 सेकंड के बजाय 1.2 सेकंड में चलेगा। तो क्या हुआ? 3 सेकंड 30 मिनट की तुलना में अधिक तेज है जो कार्य लिया गया है।
मैक्रो रिकॉर्डर शुरू करने के लिए कुछ और सुझाव:
- Apostrophe का उपयोग किया जाता है एक टिप्पणी इंगित करें। एपोस्ट्रोफ के बाद कुछ भी VBA द्वारा अनदेखा किया जाता है
- यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग है। मूल वाक्यविन्यास ऑब्जेक्ट.ऐक्शन है। यदि ऑब्जेक्ट ओरिएंटेड कंपाइलर फुटबॉल खेल रहा था, तो यह गेंद को किक करने के लिए "बॉल.किक" कहेगा। इसलिए "Selection.Cut" वर्तमान चयन पर एक "एडिट> कट" करने के लिए कहता है।
- उपरोक्त उदाहरण में, रेंज संशोधक सक्रिय सेल के सापेक्ष हैं। यदि सक्रिय सेल B2 में है और आप कहते हैं "ActiveCell.Range (" A1: C3 ")" सेलेक्ट करें ", तो आप सेल B2 में शुरू होने वाले 3 कॉलम क्षेत्र द्वारा 3 पंक्ति का चयन करें। दूसरे शब्दों में, आप B2: D4 का चयन करें। "ActiveCell.Range (" A1 ")" कहते हुए सक्रिय सेल से शुरू होने वाले 1 x 1 सेल रेंज का चयन करने के लिए कहते हैं। यह अविश्वसनीय रूप से बेमानी है। यह "ActiveCell.Select" कहने के बराबर है।
- पहली बार मैक्रो चलाने से पहले अपनी कार्यपुस्तिका सहेजें। इस तरह, अगर इसमें कोई त्रुटि है और कुछ अप्रत्याशित है, तो आप सहेजे बिना बंद कर सकते हैं और सहेजे गए संस्करण पर वापस लौट सकते हैं।
उम्मीद है कि यह सरल उदाहरण आपको नौसिखिए मैक्रो रिकॉर्डर को एक साधारण मैक्रो रिकॉर्ड करने का साहस देगा, जो अगली बार आपके पास एक्सेल में प्रदर्शन करने के लिए आवर्ती कार्य होगा।