VBA Join - एक्सेल VBA के चरण-दर-चरण उदाहरण समारोह में शामिल हों

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

एक्सेल VBA JOIN फंक्शन

जैसा कि नाम से ही पता चलता है, VBA JOIN फ़ंक्शन का उपयोग निर्दिष्ट सीमांकक के साथ सबस्ट्रिंग के एक सरणी में शामिल होने के लिए किया जाता है। यदि हम किसी भी सीमांकक को निर्दिष्ट नहीं करते हैं, तो यह डिफ़ॉल्ट सीमांकक चरित्र के रूप में 'स्पेस' लेता है। यह उसी तरह से काम करता है जैसे कॉनकैटनेट फ़ंक्शन एक्सेल में करता है, सिवाय इसके कि हमें सीमांकक चरित्र को केवल एक बार निर्दिष्ट करना है जबकि, कॉनटेननेट फ़ंक्शन में, हमें हर दो स्ट्रिंग्स के बीच हर बार सीमांकक वर्ण निर्दिष्ट करना होगा।

फ़ंक्शन का सिंटैक्स है

जैसा कि हम देख सकते हैं, फ़ंक्शन दो तर्क लेता है और एक स्ट्रिंग लौटाता है। तर्क हैं:

  1. SourceArray : हमें उन सभी सामग्रियों को निर्दिष्ट करना होगा, जो जुड़ने हैं।
  2. Delimiter : परिणामी स्ट्रिंग को बनाते समय परिसीमन का उपयोग प्रत्येक सबस्ट्रिंग को अलग करने के लिए किया जाता है। जैसा कि यह एक वैकल्पिक तर्क है, अगर हम इसे छोड़ देते हैं, तो सीमांकक एक स्थान "" होना तय है।

VBA SPLIT फ़ंक्शन, VBA JOIN फ़ंक्शन का सटीक विपरीत कार्य है।

VBA के उदाहरण समारोह में शामिल हों

नीचे एक्सेल VBA में शामिल होने के समारोह के उदाहरण हैं।

VBA Join - उदाहरण # 1

मान लीजिए, हम पहले (रमेश), मध्य (कुमार), और अंतिम नाम (मिश्रा) में शामिल होना चाहते हैं।

चरण होंगे:

  • सबसे पहले, हमें विजुअल बेसिक एडिटर खोलने की जरूरत है। हम 'डेवलपर' टैब एक्सेल के तहत 'कोड' समूह में 'विजुअल बेसिक' कमांड पर क्लिक करके ऐसा कर सकते हैं या हम एक्सेल शॉर्टकट की Alt + F11 का उपयोग कर सकते हैं ।
  • मॉड्यूल को "शीट 1" पर राइट-क्लिक करके डालें और संदर्भ मेनू से 'इन्सर्ट' कमांड चुनें और फिर डालने के लिए 'मॉड्यूल' चुनें।
  • 'JoiningName' नाम का एक सबरूटीन बनाएँ।

कोड:

सब ज्वाइनिंगनाम () एंड सब
  • जोइन फ़ंक्शन का उपयोग निम्नानुसार करें

कोड:

सब ज्वाइनिंगनाम () रेंज ("डी 2")। मान = ज्वाइन (ऐरे ("रमेश", "कुमार", "मिश्रा")) एंड सब

हम देख सकते हैं कि हमने ARRAY फ़ंक्शन का उपयोग JOIN फ़ंक्शन को SourceArray प्रदान करने के लिए किया है और सीमांकित चरित्र को निर्दिष्ट करने के लिए छोड़ दिया है इसलिए 'स्पेस' डिफ़ॉल्ट वर्ण होगा। JOIN फ़ंक्शन का प्रोसेस्ड वैल्यू सेल D2 में लिखा जाएगा जब हम F5 कुंजी या मैन्युअल रूप से इस कोड को निष्पादित करेंगे।

VBA जॉइन करें - उदाहरण # 2

मान लीजिए, हम आइटम नाम के साथ विभिन्न एक्सेल फाइल बनाना चाहते हैं जिसमें केवल उस आइटम की बिक्री हो।

  • शॉर्टकट की Alt + F11 का उपयोग करके Visual Basic Editor खोलें।
  • प्रासंगिक मेनू खोलने के लिए 'Sheet1 ′ (उदाहरण 2)' शीट पर राइट क्लिक करें और VBA प्रोजेक्ट में VBA 'मॉड्यूल' डालने के लिए 'Insert' पर क्लिक करें।
  • 'CreateItemSoldFiles' नामक एक सबरूटीन को परिभाषित करें।

कोड:

उप CreateItemSoldFiles () उप उप
  • हमें टूल मेनू का उपयोग करके 'Microsoft स्क्रिप्टिंग रनटाइम' ऑब्जेक्ट लाइब्रेरी का संदर्भ सेट करना होगा -> संदर्भ … कमांड, क्योंकि हम कुछ कोड (ऑब्जेक्ट्स) का उपयोग करेंगे, जो इस ऑब्जेक्ट लाइब्रेरी को शामिल नहीं करने पर काम नहीं करेगा।
  • अब हम सभी चर घोषित करेंगे।

कोड:

नई स्क्रिप्टिंग के रूप में डिम FSO.ileSystemObject

उपरोक्त FSO वैरिएबल VBA FileSystemObject को एक्सेस देता है। बाइंड करने के बाद, हम BuildPath, CopyFile, CreateTextFile, आदि जैसे कार्यों का उपयोग कर सकते हैं।

  • अगला कथन एक TextStream ऑब्जेक्ट बनाता है। TextStream ऑब्जेक्ट के माध्यम से, हम मूल फ़ाइल से पढ़ सकते हैं या जोड़ सकते हैं।

कोड:

नई स्क्रिप्टिंग के रूप में डिम FSO.ileSystemObject स्क्रिप्टिंग के रूप में डिम ts
  • हम अधिक चर घोषित करेंगे। 'r' रेंज में पंक्तियाँ रखने के लिए है, 'fs' फ़ाइनल ज्वाइन किए गए स्ट्रिंग को स्टोर करने के लिए है, रेंज में कॉलम की संख्या जमा करने के लिए 'cols', फोल्डर के पथ को स्टोर करने के लिए 'FolPath' ताकि हम फाइलों को सेव कर सकें इन नामों के साथ एक फ़ाइल बनाने के लिए विभिन्न आइटम नामों को संग्रहीत करने के लिए फ़ोल्डर और 'Item_Sold' में।

कोड:

डिम आर रेंज के रूप में डिम स्ट्रिंग स्ट्रिंग के रूप में डिम कॉलर्स के रूप में इंटीगर डिम फोलपाथ स्ट्रिंग स्ट्रिंग के रूप में
  • श्रेणी में कुल स्तंभों की गणना करने के लिए, हम निम्नलिखित कथन को परिभाषित करेंगे।

कोड:

cols = Range ("A1")। CurrentRegion.Columns.Count

यह कथन पहले सेल A1 के लिए वर्तमान क्षेत्र का चयन करेगा और फिर वर्तमान क्षेत्र में कुल कॉलमों की गणना करेगा।

  • We will write the following statements for assigning the variable ‘FolPath’ a path using VBA ENVIRON function and Concatenation Operator.

Code:

FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath

The second statement will create the folder if the folder does not exist in the same location.

  • This code will assign the values of B column one by one to ‘Items_Sold’ We have used ‘OFFSET function’ to get the reference of cell in B column as the currently selected cell is in column A.

Code:

Items_Sold = r.Offset(0, 1).Value
  • The following bordered statement will open the files with names stored in ‘Items_Sold’ variable in one by one in appending mode (the new values will be appended at last).

Code:

Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True)

We have used Concatenate operator with variables ‘FolPath’ and ‘Items_Sold’ and static values (“” and”.xls”) to create file names for excel files.

  • We need to keep in mind that VBA JOIN function takes an only one-dimensional array as SourceArray To convert the rows into a one-dimensional array, we need to use Application.Transpose method two times.

Code:

fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab)

We have used the Resize method of range object to resize the range to the width of a number of columns in the range.

As delimiter, we have used ‘vbTab’ keyword so that values would be filled in different cells.

  • As we have stored the processed value of JOIN function into ‘fs’ variable, we will write the fs’s values into new lines of VBA created excel files for every row in our original file from row number 2 to the last row (in our case it is 350th row).
  • Before ending the loop, we will close the file opened. The code would be as shown in the screenshot.

We have written the full code now.

Code:

Sub CreateItemSoldFiles() Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String cols = Range("A1").CurrentRegion.Columns.Count FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath For Each r In Range("A2", Range("A1").End(xlDown)) Items_Sold = r.Offset(0, 1).Value Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True) fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab) ts.WriteLine fs ts.Close Next r End Sub

अब कोड निष्पादित करने के लिए, हम F5 दबाएंगे फिर, हम देख सकते हैं कि डेस्कटॉप पर VBA कोड की मदद से 'Item_Sold' नामक एक फ़ोल्डर बनाया गया है।

फ़ोल्डर में, आइटम के नाम के साथ 7 अद्वितीय फाइलें बनाई गई हैं और हम फाइलों में केवल उस विशेष आइटम के बारे में विवरण पा सकते हैं।

लैपटॉप। xls

VBA JOIN फंक्शन के बारे में याद रखने योग्य बातें

  • SourceArray एक आयामी सरणी होना चाहिए। हम एक व्यक्तिगत सेल का उल्लेख नहीं कर सकते, क्योंकि यह कई बहुआयामी सरणियों का निर्माण करेगा।
  • यदि हम एक सीमांकक के रूप में एक शून्य-लंबाई वाली स्ट्रिंग ("") निर्दिष्ट करते हैं, तो सरणी में सभी आइटम बिना सीमांकक के समवर्ती होते हैं।

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