VBA स्ट्रिंग हेरफेर फ़ंक्शन और Operaमरोड़

⚡ स्मार्ट सारांश

VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन और Operaटॉर्स संयोजन, माप और निकास करते हैंtracएक्सेल मैक्रो के अंदर टेक्स्ट को संयोजित करना। यह पृष्ठ संयोजन ऑपरेटर, लेफ्ट, राइट, मिड, लेन और इनस्ट्र फ़ंक्शन, स्प्लिटिंग और जॉइनिंग, और उन त्रुटियों के बारे में बताता है जो अक्सर स्ट्रिंग कोड को बाधित करती हैं।

  • 🔤 स्ट्रिंग डेटा: अक्षरों, प्रतीकों और संख्याओं से निर्मित एक मान, जैसे कि टेक्स्ट Jul-2015।
  • कड़ी Operaटोर: एम्परसैंड दो स्ट्रिंग्स को जोड़ता है, इसलिए "John " & "Doe" से John Doe प्राप्त होता है।
  • Extracकार्य संबंधी कार्य: लेफ्ट, राइट और मिड किसी वैल्यू के शुरू, अंत या मध्य से एक सबस्ट्रिंग निकालते हैं।
  • 📏 मापन कार्य: Len वर्णों की गणना करता है और InStr उस स्थान को लौटाता है जहाँ से एक सबस्ट्रिंग शुरू होता है।
  • 🧩 विभाजित करें और जोड़ें: Split एक सीमांकित स्ट्रिंग को एक ऐरे में तोड़ता है, और Join एक ऐरे को एक सिंगल स्ट्रिंग में पुनर्निर्मित करता है।
  • ⚠️ आम त्रुटियों: टाइप मिसमैच, InStr का शून्य मान लौटाना और अंत में रिक्त स्थान होना अधिकांश असफल तुलनाओं का कारण बनते हैं।

VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन और Operaमरोड़

VBA स्ट्रिंग Operaमरोड़

स्ट्रिंग डेटा का उपयोग संख्याओं, वर्णों और प्रतीकों से बने डेटा को रखने के लिए किया जाता है। “जुलाई-2015” स्ट्रिंग डेटा का एक उदाहरण है। यह इनसे बना है

  • वर्ण (जुलाई)
  • प्रतीक (-)
  • Numbers (2015)

स्ट्रिंग ऑपरेटर का उपयोग स्ट्रिंग डेटा में हेरफेर करने के लिए किया जाता है। उदाहरण के लिए, आप महीने और वर्ष के पहले 2015 अक्षरों से जुलाई-3 का मान जोड़ सकते हैं जैसे “Jul-2015”।

निम्न तालिका संयोजन VBA स्ट्रिंग ऑपरेटर को दर्शाती है।

एस / एन Operaटो विवरण उदाहरण उत्पादन
1 & Concatenate: इस ऑपरेटर का उपयोग स्ट्रिंग्स को एक साथ जोड़ने के लिए किया जाता है “जॉन” और “डो” जॉन डो

उदाहरण स्रोत Code

VBA स्ट्रिंग Operaटॉर्स उदाहरण स्रोत Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

उपरोक्त कोड को निष्पादित करने से निम्नलिखित परिणाम प्राप्त होता है

VBA स्ट्रिंग Operaटॉर्स उदाहरण स्रोत Code

एम्परसैंड एकमात्र ऐसा प्रतीक नहीं है जो टेक्स्ट को जोड़ने के लिए उपयोग किया जाता है, और संख्याओं के शामिल होने पर इन दोनों के बीच का अंतर महत्वपूर्ण हो जाता है।

स्ट्रिंग संयोजन के लिए & और + के बीच अंतर

VBA दो टेक्स्ट वैल्यू के बीच एम्परसेंड और प्लस साइन दोनों को स्वीकार करता है, इसलिए शुरुआती लोग अक्सर इन्हें एक ही मान लेते हैं। लेकिन जैसे ही एक ऑपरेंड संख्या या खाली वैल्यू होता है, ये अलग तरह से व्यवहार करते हैं, और इनमें से केवल एक ही सुरक्षित है।

बिहेवियर & (एम्परसैंड) + (प्लस)
दो पाठ मान उनसे जुड़ता है: “Guru” और “99” रिटर्न Guru99 उनसे जुड़ता है: “Guru” + “99” रिटर्न Guru99
पाठ और एक संख्या संख्या को टेक्स्ट में परिवर्तित करता है: “Age ” & 30 लिखने पर Age 30 प्राप्त होता है टाइप मिसमैच त्रुटि उत्पन्न होती है
दो संख्यात्मक स्ट्रिंग “10” और “5” का योग 105 होता है “10” + “5” का योग 15 हो सकता है।
एक शून्य मान Null को खाली स्ट्रिंग के रूप में मानता है यह Null लौटाता है और पूरे परिणाम को खारिज कर देता है।

💡टिप: संयोजन के लिए हमेशा एम्परसैंड का प्रयोग करें और प्लस चिह्न को आरक्षित रखें। अंकगणितीय आपरेशनसएम्परसैंड से पहले और बाद में एक स्पेस दें, क्योंकि VBA द्वारा "Total&" को लॉन्ग टाइप डिक्लेरेशन कैरेक्टर के रूप में पढ़ा जाता है।

VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन

VBA स्ट्रिंग मैनिपुलेशन एक महत्वपूर्ण तत्व है मैक्रो प्रोग्रामिंग के लिए एक्सेल VBA और स्ट्रिंग ऑपरेशन। एक्सेल विभिन्न प्रकार के VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन प्रदान करता है जैसे:

  • वाम: का उपयोग किया जाता हैtracस्ट्रिंग के बाईं ओर से t अक्षर
  • सही: का उपयोग किया जाता हैtracस्ट्रिंग के दाईं ओर से t अक्षर
  • मध्यम: का उपयोग किया जाता हैtracकिसी स्ट्रिंग के मध्य से एक सबस्ट्रिंग।
  • लेन: इसका उपयोग स्ट्रिंग की लंबाई ज्ञात करने के लिए किया जाता है
  • निर्देप्राप्तगुम: इसका उपयोग स्ट्रिंग में सबस्ट्रिंग की स्थिति ज्ञात करने के लिए किया जाता है
  • ट्रिमस्ट्रिंग के दोनों सिरों से रिक्त स्थान हटाने के लिए : का उपयोग किया जाता है।
  • बदलें: का उपयोग एक सबस्ट्रिंग के हर बार आने को दूसरे सबस्ट्रिंग से बदलने के लिए किया जाता है।
  • यूकेस / एलकेसस्ट्रिंग को अपर केस या लोअर केस में बदलने के लिए : का उपयोग किया जाता है।

नीचे दी गई तालिका में प्रत्येक फ़ंक्शन का सिंटैक्स एक उदाहरण सहित दिखाया गया है, ताकि आप पैटर्न को सीधे मैक्रो में कॉपी कर सकें।

समारोह वाक्य - विन्यास उदाहरण उत्पादन
वाम बाएँ (स्ट्रिंग, लंबाई) बाएँ (“जुलाई-2015”, 3) जुलाई
सही दायाँ(स्ट्रिंग, लंबाई) राइट (“जुलाई-2015”, 4) 2015
मध्यम मध्य(स्ट्रिंग, प्रारंभ, लंबाई) मध्य (“जुलाई-2015”, 5, 4) 2015
लेन लेन(स्ट्रिंग) लेन (“जुलाई-2015”) 8
निर्देप्राप्तगुम InStr(start, string, substring) InStr(1, “जुलाई-2015”, “-”) 4
ट्रिम ट्रिम(स्ट्रिंग) काट-छांट करना(" Guru99 “) Guru99
बदलें बदलें(स्ट्रिंग, खोजें, बदलें) बदलें(“जुलाई-2015”, “-”, “/”) जुलाई/2015
यूकेस यूकेस(स्ट्रिंग) UCase(“guru99”) गुरु99

नीचे दिया गया मैक्रो इन कई फ़ंक्शनों को मिलाकर एक दिनांक लेबल को उसके भागों से पुनर्निर्मित करता है।

Sub StringFunctionsDemo()
    Dim Source As String
    Dim MonthPart As String
    Dim YearPart As String

    Source = "July-2015"

    ' Take the first three characters
    MonthPart = Left(Source, 3)
    ' Take the last four characters
    YearPart = Right(Source, 4)

    MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions"
End Sub

मैक्रो चलाने पर जुलाई-2015 प्रदर्शित होता है। प्रत्येक फ़ंक्शन एक नया मान लौटाता है और मूल स्ट्रिंग को अपरिवर्तित छोड़ देता है, यही कारण है कि परिणामों को एक ही अभिव्यक्ति में सुरक्षित रूप से संयोजित किया जा सकता है।

ये सभी फ़ंक्शन एक समय में एक ही स्ट्रिंग पर काम करते हैं। जब किसी एक मान में पूरी सूची होती है, तो दो अन्य फ़ंक्शन इसे बेहतर ढंग से संभालते हैं।

VBA में स्ट्रिंग को विभाजित और संयोजित कैसे करें

एक्सेल में पेस्ट किया गया डेटा अक्सर एक लंबे मान के रूप में आता है, जिसमें प्रत्येक आइटम के बीच एक विभाजक होता है, जैसे "पेप्सी, कोक, फैंटा, जूस"। इसे मिड और इंस्ट्रक्टिव फ़ंक्शन से पढ़ना धीमा और मुश्किल होता है। वीबीए ठीक इसी काम के लिए दो फ़ंक्शन प्रदान करता है।

विभाजित करें यह एक सीमांकित स्ट्रिंग लेता है और एक शून्य-आधारित सरणी लौटाता है, जिसमें प्रत्येक आइटम में एक तत्व होता है। जुडें यह इसका उल्टा करता है, एक ऐरे लेता है और तत्वों के बीच विभाजक के साथ एक एकल स्ट्रिंग लौटाता है। ध्यान दें कि जॉइन ऐरे पर काम करता है, दो अलग-अलग स्ट्रिंग पर नहीं।

Sub SplitAndJoinDemo()
    Dim Source As String
    Dim Items() As String
    Dim i As Long

    Source = "Pepsi,Coke,Fanta,Juice"

    ' Break the value into an array on every comma
    Items = Split(Source, ",")

    For i = LBound(Items) To UBound(Items)
        Sheet1.Cells(i + 1, 1).Value = Items(i)
    Next i

    ' Rebuild the list with a different separator
    MsgBox Join(Items, " | "), vbOKOnly, "Joined List"
End Sub

यह लूप प्रत्येक पेय को वर्कशीट की अपनी-अपनी पंक्ति में लिखता है, और फिर मैसेज बॉक्स में Pepsi | Coke | Fanta | Juice लिखा आता है। तीन बिंदु इस पैटर्न को प्रोडक्शन कोड में विश्वसनीय बनाते हैं:

  • शून्य-आधारित परिणाम: Split हमेशा 0 से क्रमांकित एक ऐरे लौटाता है, चाहे Option Base कुछ भी सेट किया गया हो, इसलिए लूप को एक निश्चित संख्या के बजाय LBound और UBound के साथ चलाएं।
  • स्ट्रिंग के रूप में घोषित करें: परिणाम को एक डायनामिक स्ट्रिंग ऐरे में असाइन करें। पहले एक निश्चित आकार घोषित करने से कंपाइल एरर आ जाता है।
  • खाली इनपुट: एक खाली स्ट्रिंग को विभाजित करने पर बिना तत्वों वाला एक सरणी प्राप्त होता है, इसलिए आइटम (0) पढ़ने से पहले UBound के साथ परीक्षण करें।

सही फंक्शन चुनने के बावजूद, स्ट्रिंग कोड कुछ निश्चित तरीकों से विफल हो जाता है।

VBA स्ट्रिंग में होने वाली आम त्रुटियाँ और उन्हें ठीक करने के तरीके

एक्सेल वीबीए में स्ट्रिंग संबंधी अधिकांश त्रुटियाँ कुछ ही कारणों से उत्पन्न होती हैं। समस्या के लक्षण को पहचान लेने से लंबे समय तक चलने वाली डीबगिंग प्रक्रिया से बचा जा सकता है।

  • संयोजन में प्रकार का बेमेल: टेक्स्ट और संख्या के बीच प्लस चिह्न का उपयोग किया गया था। इसे एम्परसैंड (+) चिह्न से बदलें, जिससे संख्या स्वतः परिवर्तित हो जाएगी।
  • InStr 0 लौटाता है: सबस्ट्रिंग नहीं मिली। InStr विफलता पर -1 के बजाय 0 लौटाता है, इसलिए परिणाम को Mid में भेजने से पहले शून्य से अधिक मान की जाँच करें।
  • मिड या लेफ्ट में अमान्य प्रक्रिया कॉल: अनुरोधित लंबाई ऋणात्मक है, या प्रारंभिक स्थिति 1 से कम है। कॉल को लेन से सुरक्षित करें ताकि लंबाई कभी भी स्ट्रिंग से अधिक न हो।
  • ऐसी तुलनाएँ जो मेल खानी चाहिए लेकिन मेल नहीं खातीं: आयातित डेटा में अंत में आने वाले रिक्त स्थान समानता को भंग कर देते हैं। दोनों पक्षों को Trim में लपेटें, और जब केस को अनदेखा करना हो तो StrComp का उपयोग करें।
  • वह पाठ जो संख्या में परिवर्तित नहीं होगा: “1,200” जैसे मान विभाजक के कारण अंकगणितीय गणना में विफल हो जाते हैं। CLng का उपयोग करके परिवर्तित करने से पहले Replace का उपयोग करके इसे हटा दें।

उपरोक्त कोड युक्त Excel डाउनलोड करें

ऊपर दी गई एक्सेल फ़ाइल डाउनलोड करें Code

अक्सर पूछे जाने वाले प्रश्न

एक वेरिएबल-लेंथ स्ट्रिंग में लगभग दो अरब अक्षर तक समा सकते हैं, और एक फिक्स्ड-लेंथ स्ट्रिंग में 65,400 तक। हालांकि, एक वर्कशीट सेल में केवल 32,767 अक्षर ही स्टोर होते हैं, इसलिए शीट में लिखते समय लंबी वैल्यू को छोटा कर दिया जाता है।

बराबर का चिह्न डिफ़ॉल्ट रूप से केस-सेंसिटिव तुलना करता है। केस-इनसेंसिटिव परिणाम के लिए StrComp(a, b, vbTextCompare) का उपयोग करें, या पूरे मॉड्यूल के लिए डिफ़ॉल्ट को बदलने के लिए मॉड्यूल के शीर्ष पर Option Compare Text लिखें।

एम्परसैंड (ampersand) जोड़ने से पहले प्रत्येक ऑपरेंड को टेक्स्ट में परिवर्तित कर देता है, इसलिए 10 और 5 से स्ट्रिंग 105 प्राप्त होती है। यदि परिणाम को किसी संदेश में प्रदर्शित करना हो, तो उसे संख्यात्मक रूप में ही रखें और पहले जोड़ें, फिर परिणाम को संयोजित करें।

हाँ। इनपुट और अपेक्षित आउटपुट का वर्णन करें, उदाहरण के लिए...tracपहले डैश से पहले कोड को संशोधित करें, और एक एआई सहायक लेफ्ट और इनस्ट्र एक्सप्रेशन लौटाएगा। डैश की अनुपस्थिति जैसे विशिष्ट मामलों के विरुद्ध इसका परीक्षण करें।

जी हां। Mid जैसे नेस्टेड एक्सप्रेशन को पेस्ट करें जिसके अंदर InStr हो, और एक AI असिस्टेंट इसे चरणों में तोड़ देगा, प्रत्येक आर्गुमेंट का नाम देगा, और उस स्थिति को चिह्नित करेगा जहां InStr शून्य लौटाता है और कॉल विफल हो जाती है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: