मैं एक्सेल में एक गैरमानक दिनांक प्रारूप को कैसे पार्स करूं?


24

मेरे पास प्रारूप में तारीख-जैसे स्ट्रिंग मान हैं yyyy-mm-dd, जैसे 2011-Sep-13। मुझे इन्हें एक्सेल तिथि क्रमांक में बदलने की आवश्यकता है ताकि मैं उन्हें सूत्रों में उपयोग कर सकूं।

DATEVALUE इस प्रारूप को पहचानने में सक्षम नहीं है; मैं बस #VALUE!तब मिलता हूं जब मैं कोशिश करता हूं। यह कस्टम तिथि प्रारूप (अधिकांश प्रोग्रामिंग भाषाओं के विपरीत) भी नहीं लेता है।

मैं मनमाने ढंग से दिनांक स्वरूपों को एक्सेल तिथि मानों में कैसे बदल सकता हूँ?

जवाबों:


21

आपको स्ट्रिंग पार्सिंग करने की आवश्यकता होगी, फिर एक उपयुक्त स्वरूपित मान पास करें DATEVALUE- कुछ इस तरह:

=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))

(संपादित करें: अद्यतन सूत्र - परीक्षण किया गया है और यह मेरे लिए एक उदाहरण पर काम करता है - आपके इनपुट के आधार पर परिशोधित करने की आवश्यकता हो सकती है)


1
+1: जब आपने पोस्ट किया तो मैं क्लिपबोर्ड पर जाने के लिए तैयार था: = DATEVALUE (RIGHT (A1,2) & MID (A1, FIND ("- A1), 5) और MID (A1,3,2)
Excellll

हे, मैंने कभी बिट्स को फिर से व्यवस्थित करने के बारे में नहीं सोचा। धन्यवाद!
क्रेग वॉकर

2
8 साल और बाद में कई एक्सेल संस्करण, यह अभी भी सबसे अधिक प्रासंगिक जवाब है! काश एक्सेल एक समारोह प्रदान कर सकता हैPARSEDATE([string_value], [date format])
मनु मंजूनाथ

5

ध्यान दें कि महीने के नाम Windows क्षेत्रीय विकल्प विशिष्ट हैं। इसलिए, यदि आपके विंडोज क्षेत्रीय विकल्प यूक्रेनी पर सेट हैं, तो DATEVALUE #VALUE! "07-Nov-2012" के लिए, लेकिन "07-Лис-2012" को स्वीकार करेंगे।


1
बहुत ही महत्वपूर्ण नोट !! यह अफ़सोस की बात है कि एक्सेल दोनों क्षेत्रीय सेटिंग + अंग्रेजी महीने / दिन के नाम को डिफ़ॉल्ट रूप से नहीं पहचान रहा है
athanassis

1

एक्सेल DateValue फ़ंक्शन क्षेत्र निर्भर है। यदि आप यूरोप में "04-11-2008" की तरह एक स्ट्रिंग पार्स करते हैं, जिसे 4 नवंबर के रूप में और यूएस में 11 अप्रैल को पार्स किया जाएगा।

इसके आस-पास जाने के लिए आप DateSerial फ़ंक्शन का उपयोग कर सकते हैं और अपने आप को पार्स कर सकते हैं। यह भी आसानी से अपने स्वयं के गैर मानक तिथि प्रारूप के लिए अनुकूलित किया जा सकता है।

' Region independent date parsing
' Expects a datetimestr in the format  "04-11-2008 21:39:39"
' The function VBA.DateTime.DateValue() mixes up the date and month in different regions
Function parseDateTime(dateTimeStr As String) As Date

    Dim parts As Variant
    parts = VBA.Strings.Split(dateTimeStr, " ")

    Dim datePart As String, timePart As String
    datePart = parts(0)
    timePart = parts(1)

    Dim dateParts As Variant, day As Integer, month As Integer, year As Integer
    dateParts = VBA.Strings.Split(datePart, "-")
    day = dateParts(0)
    month = dateParts(1)
    year = dateParts(2)

    Dim parsed_date As Date, parsed_time As Date
    parsed_date = VBA.DateTime.DateSerial(year, month, day)
    parsed_time = VBA.DateTime.TimeValue(timePart)

    parseDateTime = parsed_date + parsed_time
End Function
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.