VBA कई वर्षों से Microsoft Office सुइट का हिस्सा रहा है। जबकि इसमें पूर्ण VB एप्लिकेशन की पूर्ण कार्यक्षमता और शक्ति नहीं है, VBA Office उपयोगकर्ताओं को Office उत्पादों को एकीकृत करने और उनमें आपके द्वारा किए जाने वाले कार्य को स्वचालित करने के लिए लचीलापन प्रदान करता है।
वीबीए में उपलब्ध सबसे शक्तिशाली उपकरणों में से एक डेटा की एक पूरी श्रृंखला को एक एकल चर में लोड करने की क्षमता है जिसे एक सरणी कहा जाता है। इस तरह से डेटा लोड करके, आप विभिन्न तरीकों से डेटा की उस श्रेणी पर गणना कर सकते हैं या गणना कर सकते हैं।
तो वीबीए सरणी क्या है? इस लेख में हम उस प्रश्न का उत्तर देंगे, और आपको दिखाएंगे कि अपनी स्वयं की VBA स्क्रिप्ट में किसी एक का उपयोग कैसे करें।
VBA Array क्या है?
Excel में VBA सरणी का उपयोग करना बहुत आसान है, लेकिन यदि आपने कभी किसी सरणी का उपयोग नहीं किया है तो सरणियों की अवधारणा को समझना थोड़ा जटिल हो सकता है।
एक ऐरे के बारे में सोचें जैसे एक बॉक्स जिसमें उसके अंदर सेक्शन हों। एक-आयामी सरणी एक बॉक्स है जिसमें अनुभागों की एक पंक्ति होती है। द्वि-आयामी सरणी दो पंक्तियों वाला एक बॉक्स है।
आप इस "बॉक्स" के प्रत्येक अनुभाग में अपनी पसंद के किसी भी क्रम में डेटा डाल सकते हैं।
अपनी वीबीए स्क्रिप्ट की शुरुआत में, आपको अपने वीबीए सरणी को परिभाषित करके इस "बॉक्स" को परिभाषित करने की आवश्यकता है। तो एक सरणी बनाने के लिए जो डेटा का एक सेट (एक-आयाम सरणी) रख सकता है, आप निम्न पंक्ति लिखेंगे।
Dim arrMyArray(1 To 6) As String
बाद में आपके प्रोग्राम में, आप कोष्ठक के अंदर अनुभाग को संदर्भित करके डेटा को इस सरणी के किसी भी भाग में रख सकते हैं।
arrMyArray(1) = "Ryan Dube"
आप निम्न पंक्ति का उपयोग करके द्वि-आयामी सरणी बना सकते हैं।
Dim arrMyArray(1 To 6,1 to 2) As Integer
पहली संख्या पंक्ति का प्रतिनिधित्व करती है, और दूसरी स्तंभ है। तो उपरोक्त सरणी 6 पंक्तियों और 2 स्तंभों के साथ एक श्रेणी धारण कर सकती है।
आप इस सरणी के किसी भी तत्व को डेटा के साथ निम्नानुसार लोड कर सकते हैं।
arrMyArray(1,2) = 3
यह 3 को सेल B1 में लोड करेगा।
एक सरणी किसी भी प्रकार के डेटा को एक नियमित चर के रूप में रख सकती है, जैसे कि तार, बूलियन, पूर्णांक, फ्लोट और बहुत कुछ।
कोष्ठक के अंदर की संख्या भी एक चर हो सकती है। प्रोग्रामर आमतौर पर एक सरणी के सभी वर्गों के माध्यम से गिनने के लिए फॉर लूप का उपयोग करते हैं और स्प्रेडशीट में डेटा कोशिकाओं को सरणी में लोड करते हैं। आप इसे इस लेख में बाद में देखेंगे।
Excel में VBA Array कैसे प्रोग्राम करें
आइए एक साधारण प्रोग्राम पर एक नज़र डालें जहां आप स्प्रेडशीट से जानकारी को एक बहुआयामी सरणी में लोड करना चाह सकते हैं।
उदाहरण के तौर पर, आइए एक उत्पाद बिक्री स्प्रैडशीट देखें, जहां आप बिक्री प्रतिनिधि का नाम, आइटम और कुल बिक्री को स्प्रेडशीट से बाहर निकालना चाहते हैं।
ध्यान दें कि VBA में जब आप पंक्तियों या स्तंभों का संदर्भ देते हैं, तो आप ऊपर बाईं ओर से 1 पर शुरू होने वाली पंक्तियों और स्तंभों की गणना करते हैं। इसलिए प्रतिनिधि स्तंभ 3 है, आइटम स्तंभ 4 है, और कुल स्तंभ 7 है।
इन तीन स्तंभों को सभी 11 पंक्तियों में लोड करने के लिए, आपको निम्न स्क्रिप्ट लिखनी होगी।
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
आप देखेंगे कि शीर्ष लेख पंक्ति को छोड़ने के लिए, पहले के लिए पंक्ति संख्या को 1 के बजाय 2 से शुरू करने की आवश्यकता है। इसका मतलब है कि जब आप सेल मान लोड कर रहे हों तो आपको सरणी पंक्ति मान के लिए 1 घटाना होगा। सेल (i, j) का उपयोग करके सरणी में। मान।
अपनी VBA सरणी स्क्रिप्ट कहां डालें
प्रोग्राम को एक्सेल में वीबीए स्क्रिप्ट रखने के लिए, आपको वीबीए संपादक का उपयोग करने की आवश्यकता है। आप डेवलपर . का चयन करके इस तक पहुंच सकते हैं मेनू और कोड देखें selecting का चयन करना रिबन के नियंत्रण अनुभाग में।
यदि आपको मेनू में डेवलपर दिखाई नहीं देता है, तो आपको इसे जोड़ना होगा। ऐसा करने के लिए, फ़ाइल . चुनें और विकल्प एक्सेल विकल्प विंडो खोलने के लिए।
चुनिंदा कमांड को ड्रॉपडाउन से सभी कमांड . में बदलें . डेवलपर Select चुनें बाएं मेनू से और जोड़ें . चुनें इसे दाईं ओर फलक पर ले जाने के लिए बटन। इसे सक्षम करने के लिए चेकबॉक्स चुनें और ठीक . चुनें समाप्त करने के लिए।
जब कोड संपादक विंडो खुलती है, तो सुनिश्चित करें कि जिस शीट में आपका डेटा है वह बाएं फलक में चयनित है। कार्यपत्रक Select चुनें बाएं ड्रॉपडाउन में और सक्रिय करें सही। यह वर्कशीट_एक्टिवेट () नामक एक नया सबरूटीन बनाएगा।
जब भी स्प्रैडशीट फ़ाइल खोली जाएगी यह फ़ंक्शन चलेगा. इस सबरूटीन के अंदर स्क्रिप्ट पेन में कोड पेस्ट करें।
यह स्क्रिप्ट 12 पंक्तियों के माध्यम से काम करेगी और कॉलम 3 से प्रतिनिधि नाम, कॉलम 4 से आइटम, और कॉलम 7 से कुल बिक्री लोड करेगी।
एक बार दोनों लूप के लिए समाप्त हो जाने के बाद, दो आयामी सरणी arrMyArray में आपके द्वारा मूल शीट से निर्दिष्ट सभी डेटा शामिल हैं।
Excel VBA में ऐरे में हेर-फेर करना
मान लें कि आप सभी अंतिम बिक्री मूल्यों पर 5% बिक्री कर लागू करना चाहते हैं, और फिर सभी डेटा को एक नई शीट पर लिखना चाहते हैं।
परिणाम को एक नई शीट पर लिखने के आदेश के साथ, आप पहले के बाद एक और फॉर लूप जोड़कर ऐसा कर सकते हैं।
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
यह संपूर्ण सरणी को शीट2 में "अनलोड" करेगा, जिसमें एक अतिरिक्त पंक्ति होगी जिसमें कर राशि के लिए कुल 5% गुणा किया जाएगा।
परिणामी शीट इस तरह दिखेगी।
जैसा कि आप देख सकते हैं, एक्सेल में वीबीए सरणियाँ अत्यंत उपयोगी हैं और किसी भी अन्य एक्सेल ट्रिक की तरह बहुमुखी हैं।
उपरोक्त उदाहरण एक सरणी के लिए एक बहुत ही सरल उपयोग है। आप बहुत बड़ी सरणियाँ बना सकते हैं और उनमें संग्रहीत डेटा के विरुद्ध सॉर्टिंग, औसत, या कई अन्य कार्य कर सकते हैं।
यदि आप वास्तविक रचनात्मक प्राप्त करना चाहते हैं, तो आप दो अलग-अलग शीट से कोशिकाओं की एक श्रेणी वाली दो सरणियाँ भी बना सकते हैं, और प्रत्येक सरणी के तत्वों के बीच गणना कर सकते हैं।
एप्लिकेशन केवल आपकी कल्पना द्वारा सीमित हैं।