मैक्रो को वर्कशीट डालने के लिए - एक्सेल टिप्स

विषय - सूची

"एनजे में फंस" ने इस सप्ताह का सवाल पूछा:

मैं एक एक्सेल वर्कबुक बना रहा हूं जिसमें बिक्री के आंकड़े हैं। पहला एक्सेल वर्कशीट कंपनी के पहले बिक्री क्षेत्र से संबंधित है (जैसे। FL01।) वर्कशीट का टैब नाम (साथ ही सेल A1) बिक्री क्षेत्र संख्या FL01 है। चार्ट को ड्राइव करने वाला डेटा दाईं ओर है (प्रिंट करने योग्य सीमा के बाहर जो मैंने सेट किया है) और लुकअप कुंजी के रूप में सेल A1 में बिक्री क्षेत्र संख्या FL01 के साथ VLOOKUP का उपयोग करके किसी अन्य एक्सेल वर्कबुक से पॉपुलेटेड है। मुझे वर्कबुक में 76 समान वर्कशीट (प्रत्येक बिक्री क्षेत्र के लिए एक) को जोड़ने की आवश्यकता है, जैसे कि प्रत्येक शीट का टैब नाम और सेल A1 क्रमिक बिक्री क्षेत्र संख्या (जैसे। FL01, FL02, LK01, LK02) के बराबर है। मैं यह कैसे करूँ स्वचालित तरीका?

यह VBA मैक्रो के साथ आसानी से पूरा होता है, लेकिन मुझे मैन्युअल रूप से ऐसा करने के लिए टिप को कवर करने दें। एक बार जब आपके पास फ़ॉर्मेटिंग और प्रिंट रेंज के साथ शीट सेट हो जाती है, तो आप उस शीट के लिए टैब पर राइट क्लिक करके आसानी से शीट को डुप्लिकेट कर सकते हैं। पॉपअप वाले मेनू से, मूव या कॉपी चुनें। मूव या कॉपी डायलॉग बॉक्स से, "एंड टू मूव" चुनें और "क्रिएट ए कॉपी" बॉक्स चेक करें, फिर ओके पर क्लिक करें। स्वरूपण के साथ आपकी शीट की एक प्रति आपकी कार्यपुस्तिका में एक नई वर्कशीट के रूप में जोड़ी जाएगी। (इस प्रक्रिया को गति देने के लिए, वर्कशीट टैब को दाईं ओर खींचते हुए Ctrl कुंजी दबाए रखें।) आप आमतौर पर शीट का नाम बदलना चाहेंगे। नया टैब राइट-क्लिक करें, नाम बदलें और एक सार्थक नाम टाइप करें।

एक्सेल मैक्रो को काम करने के लिए, इसे प्रदेशों की सूची की आवश्यकता है। मैक्रो लिखने से पहले, डेटा नामक इस पुस्तक में एक नई शीट डालें। सेल A1 में, दूसरा बिक्री क्षेत्र (आपके उदाहरण में FL02) दर्ज करें। कॉलम ए के नीचे सभी बिक्री क्षेत्रों में प्रवेश करना जारी रखें। किसी भी खाली पंक्तियों को न छोड़ें।

एक नया मैक्रो डालें और इस कोड को कॉपी करें:

Public Sub CopyIt() Sheets("Data").Select ' Determine how many territories are on Data sheet FinalRow = Range("A65000").End(xlUp).Row ' Loop through each territory on the data sheet For x = 1 To FinalRow LastSheet = Sheets.Count Sheets("Data").Select ThisTerr = Range("A" & x).Value ' Make a copy of Fl01 and move to end Sheets("FL01").Copy After:=Sheets(LastSheet) ' rename the sheet and set A1 = to the territory name Sheets(LastSheet + 1).Name = ThisTerr Sheets(ThisTerr).Select Range("A1").Value = ThisTerr Next x End Sub

मैक्रो शीट्स () का उपयोग करता है। कॉपी कमांड जो कि मैन्युअल रूप से मूव या कॉपी पर क्लिक करने के समान काम करता है। प्रत्येक कॉपी करने से पहले, मैं शीट्स की संख्या का पता लगाता हूं। संपत्ति का उपयोग करें। मुझे पता है कि अगर 56 शीट हैं और मैं एक नई शीट डालता हूं, तो इसे शीट्स (57) के रूप में संदर्भित किया जाएगा। मुझे यह अनुमान लगाने में कुछ अप्रत्याशित लगा कि एक्सेल नई शीट का नाम कैसे देगा, इसलिए मैं शीट की पहचान करने के लिए संख्यात्मक सूचकांक संख्याओं का उपयोग करता हूं। एक बार जब मैं "शीट्स (लास्टशीट + 1) .Name = ThisTerr" के साथ नई शीट का नाम बदल देता हूं, तो मैं उसके नाम का उपयोग करके शीट को संदर्भित करने के अपने पसंदीदा तरीके पर वापस स्विच कर सकता हूं।

ध्यान दें कि सूची में प्रदेशों की सूची में FL01 नहीं होना चाहिए। एक ही नाम के साथ FL01 की एक प्रति का नाम बदलने की कोशिश करने से मैक्रो में त्रुटि होगी।

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