नीथु ने YouTube पर एक टिप्पणी में आज का सवाल पूछा:
क्या एक्सेल में मैक्रो केस को सेंटेंस केस में बदल सकता है?
यह अजीब है: एक्सेल UPPER, कम और उचित जानता है, लेकिन यह Word द्वारा समर्थित अन्य मामलों का समर्थन नहीं करता है: Sentence Case या tOGGLE cASE।
चेंज केस नामक आंतरिक फ़ंक्शन का उपयोग करके चयनित टेक्स्ट केस को आसानी से Microsoft Word में बदला जा सकता है।

आप बस क्लिक कर सकते हैं:
- "सेंटेंस केस" एक वाक्य के पहले अक्षर को कैपिटल करने और अन्य सभी अक्षरों को लोअरकेस के रूप में छोड़ने के लिए।
- अपने पाठ से बड़े अक्षरों को बाहर करने के लिए "लोअरकेस"।
- "UPPERCASE" सभी अक्षरों को कैपिटल करने के लिए।
- "प्रत्येक शब्द को कैपिटलाइज़ करें" प्रत्येक शब्द के पहले अक्षर को कैपिटलाइज़ करने के लिए और दूसरे अक्षरों को कम करने के लिए छोड़ दें।
- "tOGGLE cASE" दो केस व्यू के बीच शिफ्ट करने के लिए।
हालांकि एक्सेल एक वर्ड प्रोसेसिंग एप्लिकेशन नहीं है, लेकिन कभी-कभी आपको दिए गए टेक्स्ट के मामले को बदलने की आवश्यकता हो सकती है। समान कार्यक्षमता प्रदान करने के लिए तीन एक्सेल फ़ंक्शन हैं। ये फ़ंक्शन एकल तर्क लेते हैं, और नीचे दिए गए विवरण के अनुसार प्रदान किए गए पाठ या संदर्भित सेल के पाठ मान के मामले को बदलते हैं।
LOWER()
बड़े अक्षरों को बाहर करने के लिए कार्य करते हैं।UPPER()
सभी अक्षरों को भुनाने के लिए कार्य करते हैं।PROPER()
प्रत्येक शब्द के पहले अक्षर को कैपिटल करने के लिए फ़ंक्शन।
जब हम इस लेख में टॉगल केस विकल्प पर चर्चा नहीं करेंगे, तो एक्सेल में सेंटेंस केस विकल्प का उपयोग करना आवश्यक हो सकता है, और इसे नीचे दिए गए अनुसार एकल वाक्य के लिए मौजूदा फ़ंक्शन के संयोजन से आंशिक रूप से प्राप्त किया जा सकता है।

आप एक्सेल में दिए गए वाक्य में सेलेक्ट केस को लागू करने के लिए फंक्शन कॉम्बिनेशन का उपयोग कर सकते हैं।
- दिए गए पाठ का पहला अक्षर LEFT () फ़ंक्शन का उपयोग करके लें, और इसे UPPER () फ़ंक्शन का उपयोग करके अपरकेस में बदलें:
=UPPER(LEFT(A1,1))
- और बाकी टेक्स्ट को RIGHT () और LEN () फंक्शन्स को एक साथ मिलाकर लोअर केस () फंक्शन का उपयोग करके इसे लोअर केस में बदल दें:
=LOWER(RIGHT(A1,LEN(A1)-1))
- अंत में CONCAT () फ़ंक्शन का उपयोग करके इन दो परिणामों को संक्षिप्त करें:
=CONCAT(UPPER(LEFT(A1,1)),LOWER(RIGHT(A1,LEN(A1)-1)))
यह टेक्स्ट को वाक्य केस में बदल देगा। आप इसे सभी बड़े किए गए टेक्स्ट के लिए भी टेस्ट कर सकते हैं, जो A2 सेल में दिखाया गया है।
क्या होगा अगर एक सेल में एक से अधिक वाक्य हैं जिन्हें आप सेंटेंस केस में बदलना चाहते हैं?

ऐसा करने का एक विकल्प यह परिवर्तन करने के लिए VBA का उपयोग किया जा सकता है।
SENTENCECASE()
उपयोगकर्ता परिभाषित फ़ंक्शन दिए गए पाठ को लेता है, कई वाक्यों को खोजने के लिए तीन विराम चिह्नों (अवधि, प्रश्न चिह्न और विस्मयादिबोधक बिंदु) के लिए पाठ को संसाधित करता है, प्रत्येक वाक्य के पहले अक्षर को कैपिटलाइज़ करता है, और परिणाम लौटाता है।
Function SENTENCECASE(txt As String) Dim resArr() As String Dim newArr1(), newArr2(), newArr3() As Variant ReDim resArr(0) resArr(0) = txt newArr1 = splitAndTransform(resArr(0), ".") If Not IsEmpty(newArr1) Then For Each par1 In newArr1 newArr2 = splitAndTransform(par1, "?") If Not IsEmpty(newArr2) Then For Each par2 In newArr2 newArr3 = splitAndTransform(par2, "!") If Not IsEmpty(newArr3) Then For Each par3 In newArr3 resArr(UBound(resArr)) = par3 ReDim Preserve resArr(UBound(resArr) + 1) Next par3 End If Next par2 End If Next par1 End If SENTENCECASE = Join(resArr, " ") End Function
SENTENCECASE()
फंक्शन splitAndTransform()
वाक्यों को विभाजित करने के लिए एक सहायक फ़ंक्शन का उपयोग करता है , और दिए गए परिसीमन द्वारा मामले को रूपांतरित करता है। splitAndTransform()
इस परियोजना में एक पुन: प्रयोज्य VBA फ़ंक्शन है, इसलिए इसे एक अलग सहायक फ़ंक्शन के रूप में लिखा गया है।
Function splitAndTransform(text, delimiter) Dim tmpArr Dim newArr tmpArr = Split(text, delimiter) If UBound(tmpArr)>= 0 Then ReDim newArr(UBound(tmpArr)) For i = 0 To UBound(tmpArr) If tmpArr(i) "" Then newArr(i) = Trim(tmpArr(i)) newArr(i) = UCase(Left(newArr(i), 1)) & _ LCase(Right(newArr(i), Len(newArr(i)) - 1)) If Not isPuncMarked(newArr(i)) Then newArr(i) = newArr(i) & delimiter End If End If Next i Else ReDim newArr(0) End If splitAndTransform = newArr End Function
splitAndTransform()
हेल्पर फ़ंक्शन किसी अन्य सहायक फ़ंक्शन का उपयोग करता है जिसे कहा जाता है isPuncMarked()
जो परिभाषित करता है कि दिए गए टेक्स्ट में अंत में विराम चिह्न है। यहां तक कि यह मॉड्यूल में पुन: उपयोग नहीं किया जाता है, isPuncMarked () फ़ंक्शन एक बूलियन मान लौटाता है, और कॉलर फ़ंक्शन केवल वह मान देता है जो इसे लौटाता है, लेकिन यह कैसे काम करता है। आश्रित प्रक्रियाओं में बेहतर पठनीयता प्रदान करने के लिए इस तर्क को अलग करना भी हमेशा एक अच्छा अभ्यास है।
Function isPuncMarked(sentence) As Boolean Dim rightMost As String rightMost = Right(sentence, 1) If rightMost = "." Or _ rightMost = "?" Or _ rightMost = "!" Then isPuncMarked = True Else isPuncMarked = False End If End Function
यहाँ परिणाम है।

आदर्श रूप से यह एक प्रक्रिया लिखने के लिए अच्छा विचार हो सकता है जो चयनित सीमा को ले जाएगा, और उपयोगकर्ता परिभाषित फ़ंक्शन के बजाय सेंटेंस केस का उपयोग करके सभी सामग्री को बदल देगा। यह परियोजना में निम्नलिखित उप प्रक्रिया को जोड़कर किया जा सकता है जो बड़े पैमाने पर और स्थायी रूपांतर को लागू करेगा।
Sub doSentenceCase() Dim rng As Range Dim cll As Range Dim resArr() As String Dim newArr1(), newArr2(), newArr3() As Variant Set rng = Selection For Each cll In rng.Cells ReDim resArr(0) resArr(0) = cll.Value newArr1 = splitAndTransform(cll.Value, ".") If Not IsEmpty(newArr1) Then For Each par1 In newArr1 newArr2 = splitAndTransform(par1, "?") If Not IsEmpty(newArr2) Then For Each par2 In newArr2 newArr3 = splitAndTransform(par2, "!") If Not IsEmpty(newArr3) Then For Each par3 In newArr3 resArr(UBound(resArr)) = par3 ReDim Preserve resArr(UBound(resArr) + 1) Next par3 End If Next par2 End If Next par1 End If cll.Value = Join(resArr, " ") Next cll End Sub