यह सवाल थोड़ा पुराना है, लेकिन आज तक इसका जवाब नहीं लगता है। मैंने कई साइटों पर समान प्रश्न देखे हैं, लेकिन अभी तक ऐसा कोई उत्तर नहीं मिला है जिसमें केवल अंतर्निहित एक्सेल फ़ंक्शन शामिल हों। हालांकि, VBA के साथ इसे हल करना काफी आसान है। आपको यह जानने की ज़रूरत नहीं है कि यह कैसे करना है, क्योंकि आवश्यक फ़ंक्शन बहुत सरल है।
अपनी कार्यपुस्तिका को खोलने के साथ, बस Alt + F11 दबाएं (VBA संपादक को खोलने के लिए) फिर मेनू आइटम पर क्लिक करें सम्मिलित करें > मॉड्यूल
नए VBA मॉड्यूल में, निम्न दर्ज करें:
Public Function FMT$(ByVal Value, ByVal strFormat)
FMT = VBA.Format$(Value, strFormat)
End Function
यह क्या करता है बस Format
एक्सेल के TEXT
फ़ंक्शन के बजाय VBA के स्वयं के फ़ंक्शन का उपयोग करें । यह वही है जो आप चाहते हैं।
यह नया फ़ंक्शन आपके द्वारा निर्दिष्ट प्रारूप के अनुसार किसी भी दिनांक (या संख्या) को प्रारूपित करेगा। यह ऑपरेटिंग सिस्टम की क्षेत्रीय सेटिंग्स की परवाह किए बिना मानक ( एन-यूएस ) संकेतन का उपयोग करके प्रारूप स्ट्रिंग की व्याख्या करेगा ।
अपनी कार्यपुस्तिका में इसका उपयोग करने के लिए, =FMT(A1, "yyyymmdd_hhss")
इसके बजाय बस टाइप करें =TEXT(A1, "yyyymmdd_hhss")
। (बेशक आप सेल संदर्भ और प्रारूप स्ट्रिंग को आवश्यकतानुसार बदल सकते हैं।)
वैसे, आप जो चाहें फ़ंक्शन को नाम दे सकते हैं। मैंने चुना FMT
क्योंकि यह कम था और क्योंकि फ़ंक्शन संख्या और दिनांक दोनों को प्रारूपित कर सकता है। लेकिन आप चाहें तो कुछ और वर्णनात्मक चुन सकते हैं। बस अपनी कार्यपत्रक में उसी नाम का उपयोग करना याद रखें जैसे VBA कोड में।
ध्यान दें कि VBA प्रारूप के तार एक्सेल के कस्टम प्रारूप के तार के समान नहीं हैं (उदाहरण के लिए, मिनटों के लिए "m" के बजाय "n" का उपयोग करें), लेकिन वे बहुत समान हैं। यहाँ देखो जानकारी के लिए, या "स्वरूप फंक्शन (अनुप्रयोगों के लिए विजुअल बेसिक)" के लिए खोज MSDN। विभिन्न दिनांक प्रारूप निर्दिष्टकर्ताओं को देखने के लिए नीचे की ओर स्क्रॉल करें।
विधि 2
एक अन्य दृष्टिकोण जो VBA का भी उपयोग करता है, लेकिन वास्तव में इसे बनाए रखना आसान हो सकता है, निम्नलिखित है:
- सामान्य सेल प्रारूप संवाद का उपयोग करके, सेल में अपना वांछित दिनांक प्रारूप लागू करें। यह सेल एक छिपी हुई शीट पर हो सकती है यदि आप पसंद करते हैं - तो इसे अंतिम-उपयोगकर्ता को प्रदर्शित करने की आवश्यकता नहीं है। मान लें कि आपने प्रारूप
yyyymmdd\_hhss
को सेल पर लागू कर दिया है $ A $ 1 (ध्यान दें कि अंडरस्कोर को दिखाए जाने से बच जाना चाहिए)।
- जोड़ें
GetFormat
अपनी कार्यपुस्तिका में VBA मॉड्यूल में फ़ंक्शन (नीचे दिखाया गया) ।
- दर्ज
=GetFormat($A$1, TRUE)
एक और सेल में (उदाहरण के लिए $ B $ 1 )
- वह फ़ंक्शन स्वरूप स्ट्रिंग का स्थानीयकृत संस्करण लौटाएगा । तो भले ही आपने मूल रूप से $ A $ 1 के साथ प्रारूपित किया हो
yyyymmdd\_hhss
, जब आप फ्रेंच भाषा (उदाहरण के लिए) का उपयोग करते हुए कंप्यूटर पर कार्यपुस्तिका खोलते हैं, तो फ़ंक्शन दिखाई देगाaaaammjj\_hhss
।
- अब बस अपने सभी
TEXT
कार्यों में दूसरी सेल का संदर्भ लें । उदाहरण के लिए:=TEXT(F22, $B$1)
:।
यहाँ VBA कोड है:
Public Function GetFormat$(Cell As Range, Optional ByVal UseLocal As Boolean)
If UseLocal Then
GetFormat = Cell.NumberFormatLocal
Else
GetFormat = Cell.NumberFormat
End If
End Function
यह हमें उस सेल का "निरीक्षण" करने की अनुमति देता है जिसे आपने स्थानीय स्वरूपित-स्ट्रिंग को पुनः प्राप्त करने के लिए मूल रूप से स्वरूपित किया ($ A $ 1)। वह स्ट्रिंग आपके द्वारा लागू किए गए उसी प्रारूप का प्रतिनिधित्व करेगा, लेकिन यह TEXT के लिए सही अक्षरों का उपयोग करके व्याख्या करेगा (उदाहरण के लिए "d" के बजाय "j"), इसलिए तिथियों का प्रदर्शित मूल्य सभी स्थानों पर स्थिर रहेगा। यदि आप अपनी संपूर्ण कार्यपुस्तिका के लिए केवल एक दिनांक स्वरूप का उपयोग करना चाहते हैं, तो आपको केवल 1-4 चरण एक बार करने की आवश्यकता होगी। फिर चरण 5 (TEXT फ़ंक्शन) को उन सभी कक्षों में दोहराएं जहां आप वर्तमान में इसका उपयोग करते हैं, लेकिन एक प्रारूप को हार्ड-कोडिंग करने के बजाय, आप बस उस सेल का संदर्भ लेंगे जिसमें स्थानीय स्वरूप-स्ट्रिंग ( $ B $ 1) है उदाहरण के निर्देशों में ) है ।
ध्यान दें कि GetFormat
फ़ंक्शन को बताने के लिए दूसरा तर्क स्थानीय संस्करण (जो क्षेत्रीय सेटिंग्स पर निर्भर करता है) या "मानक" संस्करण (जो हमेशा एन-यूएस पर आधारित है) को वापस करने या नहीं करने के लिए कहता है।
यहाँ कुछ स्क्रीन-शॉट्स हैं जो इसे और अधिक स्पष्ट कर सकते हैं।
- चित्र में, कॉलम 1 विभिन्न स्वरूपों के साथ एकल तिथि के कई अभ्यावेदन को सूचीबद्ध करता है।
- ध्यान दें कि पंक्तियाँ 2 और 3 एक्सेल के "सिस्टम डिफॉल्ट" तिथि स्वरूपों का उपयोग करती हैं। (ये प्रारूप डायलॉग में एक प्रमुख तारांकन द्वारा दर्शाए गए हैं और वे इंगित करते हैं कि उपयोगकर्ता की डिफ़ॉल्ट तिथि प्रारूप का उपयोग किया जाना चाहिए।) यह भी ध्यान दें कि पंक्ति 5 एक ब्रैकेट LCID का उपयोग करता है, जो महीने और दिन के नाम के लिए उपयोग की जाने वाली भाषा को अंग्रेजी में मजबूर करता है ( अन्य भाषाओं को निर्दिष्ट करने के लिए विभिन्न LCID का उपयोग किया जा सकता है)।
- दूसरा कॉलम
GetFormat(Cell, FALSE)
कॉलम 1 में प्रत्येक सेल के लिए परिणाम दिखाता है । ( FALSE
दूसरे पैरामीटर के लिए फ़ंक्शन को गैर-स्थानीयकृत वापस करने के लिए फ़ंक्शन का कारण बनता है स्वरूपों है)।
- तीसरा कॉलम
GetFormat(Cell, TRUE)
कॉलम 2 में प्रत्येक सेल के लिए क्या रिटर्न दिखाता है (यानी स्थानीय प्रारूप)।
- चौथा स्तंभ मूल, कच्ची तिथि मान और कॉलम 1 में दिखाए गए प्रारूप को फिर से तैयार करने के स्थानीय परिणाम का उपयोग करके TEXT फ़ंक्शन का परिणाम
GetFormat
दिखाता है। नोट हालांकि इस कॉलम में कोई संख्या स्वरूपण लागू नहीं किया गया था। मान TEXT फ़ंक्शन का प्रत्यक्ष परिणाम हैं।
ऊपर दिए गए अंग्रेजी (यूएस) मामले के परिणाम बहुत दिलचस्प नहीं हैं, लेकिन आप उनकी तुलना निम्नलिखित परिणामों से कर सकते हैं जो मेरे ऑपरेटिंग सिस्टम की क्षेत्रीय सेटिंग्स को विभिन्न अन्य स्थानों पर बदलकर प्राप्त किए गए थे। महत्वपूर्ण रूप से, ध्यान दें कि हम सभी के GetFormat
साथ संयोजन में उपयोग करके TEXT
सभी स्थानों पर संख्यात्मक स्वरूपों (जो दिन या महीने के नाम शामिल नहीं हैं) के लिए एक निरंतर परिणाम बनाए रखने में सक्षम हैं। और एक LCID (पंक्ति 5 के रूप में) का उपयोग करके भाषा को बाधित करके हम दिन और महीने के नाम के साथ-साथ जब भी एक निरंतर प्रारूप बनाए रख सकते हैं।
यह विधि अधिकांश स्थानों के लिए काम करती है, हालांकि यह ध्यान दिया जाना चाहिए कि हिंदू-अरबी अंकों का प्रतिनिधित्व करने के लिए उपयोग की जाने वाली स्क्रिप्ट सभी स्थानों में समान नहीं हैं। इसलिए नेपाली (भारत) लोकल जैसी क्षेत्रीय सेटिंग्स का परिणाम उन तारीखों प्रारूपों में होगा, जो एन-यूएस तारीखों की तुलना में "अलग" दिखते हैं। लेकिन ये वास्तव में संख्या के पदों के संदर्भ में समान "प्रारूप" में हैं - वे संख्याओं के लिए अलग-अलग प्रतीकों का उपयोग करते हैं।