বিন্যাস ছাড়াই স্ট্রিং থেকে তারিখ আহরণ করা হচ্ছে


1

আমি সম্প্রতি একটি এক্সেল শীট নিয়ে কাজ শুরু করেছি যা ওরাকল ডাটাবেসে পোস্ট করা বিবরণের স্ট্রিংয়ের উপর নির্ভরশীল।

স্ট্রিং কিছু এই যায়

18-8-1438 থেকে 17-8-1439 / 15-5-17 থেকে 4-5-18 অবধি পার্কিংয়ের জন্য 1 বছরের ভাড়া চার্জ

01-08-1438 থেকে 01-02-1439 / 28-04-2017 থেকে 21-10-2017 পর্যন্ত রাস্তার 6 মাসের ভাড়া চার্জ

1 বছর 310113 এর জন্য ভাড়া ভাড়া- 01-01-1438 থেকে 30-12-1438 সময়কালের জন্য আউটলেট

এবং বিবরণ পোস্ট করা ব্যক্তি এতে স্বচ্ছন্দ বোধ করে এমন কোনও ফর্ম।

এখন আমার প্রশ্ন হল আমি কীভাবে এক্সেল ফাংশন বা কোনও ভিবিএ ম্যাক্রোর মাধ্যমে সহজেই এই বিবরণ থেকে তারিখগুলি বের করব ext বোনাস হিজরি তারিখগুলিকে একটি ওয়েব পরিষেবার মাধ্যমে সেগুলি রূপান্তর না করে ফ্লাইতে গ্রেগরিয়ানে রূপান্তর করতে সক্ষম হবে।

সম্পাদনা: কাঙ্ক্ষিত আউটপুট (ধন্যবাদ ম্যাট জুহসজ) উল্লেখ করতে ভুলে গেছেন, আউটপুট এমন কিছু হওয়া দরকার যা মিমি / ডিডি / ইয়াই হিসাবে360 সূত্রে ব্যবহৃত হতে পারে। প্রতিটি প্রবেশের ক্ষেত্রে সাধারণত ২ টি তারিখ, চুক্তি শুরুর তারিখ এবং চুক্তির সমাপ্তির তারিখ থাকবে এবং হিজরি সহ একই পোস্ট হওয়ার সম্ভাবনা থাকবে এবং খুব কমই কেবল হিজরি তারিখ থাকবে। সর্বদা তাদের জন্য ডিডি / মিমি / ইয়ি বা ডিডি / মিমি / ওয়াই পরীক্ষা করুন কারণ এটি তাদের পোস্টিংয়ের স্বাভাবিক বিন্যাস।


1
দয়া করে আপনার পছন্দসই আউটপুটও নির্দিষ্ট করুন। (উদাহরণস্বরূপ আপনার জন্য 14XX বৈধ বছর? প্রথম ইনপুট থেকে কোন তারিখগুলি আপনি বৈধ বলে মনে করেন? আপনার প্রতিটি প্রবেশে ২ টি তারিখ রয়েছে, বা এটি একাধিক হতে পারে?) আপনি কি সর্বদা ডিডি / মিমি / ইয়াই পরীক্ষা করতে চান, বা চান পূর্ববর্তীটি ব্যর্থ হলে ক্ষেত্রে মিমি / ডিডি / ইয়াহী পরীক্ষা করে দেখুন? ...
মাতা জুহসজ

উত্তর:


0

1. খাঁজ তারিখ

আমি এ জাতীয় ক্ষেত্রে রেজিএক্স ফাইন্ড / রিপ্লেস প্রতিস্থাপন ব্যবহার করি যা এক্সেলে নিয়মিত প্রকাশের কার্যকারিতা যুক্ত করে।

আপনি এটি অ্যারে সূত্র হিসাবেও ব্যবহার করতে পারেন:

  • যেমন আপনি প্রতি ঘরে সর্বোচ্চ চারটি তারিখ আশা করছেন, একক সারিতে চারটি ঘর নির্বাচন করুন (উদাহরণস্বরূপ B3: E3)
  • সূত্র টাইপ করুন:
    =RegExFind(A3,"\d+-\d+-\d+")
  • সিটিআরএল + শিফট + এন্টার টিপুন
  • সূত্রটি অনুলিপি করুন

এটি 1/2 ডিজিটের দিন / মাস এবং 2/4 ডিজিট বছরের হিসাবে প্রবেশ করা সমস্ত তারিখের সন্ধান করবে, অংশগুলি একক দ্বারা পৃথক করা হয়েছে -

২. উত্তোলিত পাঠ্যগুলিকে তারিখে রূপান্তর করুন

উদাহরণগুলির মধ্যে আমি DATEVALUEফাংশনগুলি ব্যবহার করেছি , যা কেবল গ্রেগরিয়ান ক্যালেন্ডারের জন্য কাজ করে, আমার হিজরির অভিজ্ঞতা নেই।

এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ এটি তারিখগুলি বের করার ক্ষেত্রে দুর্দান্তভাবে কাজ করেছে। আমি নিষিদ্ধ তারিখগুলিতে তারিখের মূল্য ব্যবহারের ক্ষেত্রে # মূল্য ত্রুটি পাচ্ছি, এর কোনও সম্ভাব্য কারণ?
হেরুব্র্যান্ড

DATEVALUEতারিখ রূপান্তর করতে আঞ্চলিক সেটিংস ব্যবহার করে, আপনাকে সেগুলি পরিবর্তন করতে হবে।
মাতা জুহেজ

কাজ করেছে। আপনার সাহায্যটি আমার কাজকে মানিক করার ক্ষেত্রে অমূল্য ছিল, অনেক ধন্যবাদ।
হেরুব্র্যান্ড

1

রেগেক্স ছাড়াই ভিবিএ ব্যবহার করে একটি সমাধান এখানে দেওয়া হয়েছে:

Sub GetDateCandidates()
    Dim i As Long, N As Long, s As String
    Dim K As Long, a, bry

    K = 2
    N = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To N
        s = Cells(i, 1).Value
        ary = Split(s, " ")
        For Each a In ary
            bry = Split(a, "-")
            If UBound(bry) = 2 Then
                If (TestBry(bry)) Then
                    Cells(i, K).Value = "'" & a
                    K = K + 1
                End If
            End If
        Next a
        K = 2
    Next i
End Sub

Public Function TestBry(b) As Boolean

    TestBry = False

    If Not IsNumeric(b(0)) Then Exit Function
    If Not IsNumeric(b(1)) Then Exit Function
    If Not IsNumeric(b(2)) Then Exit Function
    If Len(b(0)) > 2 Then Exit Function
    If Len(b(1)) > 2 Then Exit Function
    If Len(b(2)) = 2 Or Len(b(2)) = 4 Then TestBry = True
End Function

বাক্যাংশগুলি কলামে রয়েছে । প্রতিটি বাক্যাংশ পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক শব্দ হিসাবে পৃথক করা হয়। প্রতিটি শব্দ পৃথককারী হিসাবে ড্যাশ ব্যবহার করে আইটেমগুলিতে বিভক্ত হয় । এমন:

  1. তিনটি আইটেম আছে
  2. তিনটি আইটেম সংখ্যাসূচক
  3. প্রথম দুটি আইটেমের দৈর্ঘ্য হয় 1 বা 2
  4. তৃতীয় আইটেমের দৈর্ঘ্য হয় 2 বা 4

শব্দটি বাক্যাংশের পাশে সংরক্ষণ করা হয়:

এখানে চিত্র বর্ণনা লিখুন


কলাম থেকে তারিখগুলি আনতে আমি এই আদেশটি কীভাবে প্রার্থনা করব?
হেরুব্র্যান্ড

0

আপনি যে উদাহরণ দিয়েছেন তাতে এটি একটি নিদর্শন অনুসরণ করে।

প্যাটার্নটি হ'ল: কমপক্ষে একটি ডিজিট, তার পরে একটি চিহ্ন বা ড্যাশ বা স্ল্যাশ। (x2) এবং 2 বা 4 অঙ্কের মধ্যে শেষ হয়। এবং তারা সবাই একই লাইনে আছে।

সুতরাং আপনি যেমন একটি প্যাটার্ন সাথে মেলে সমস্ত ফলাফল ফেরত দিতে regex ব্যবহার করতে পারেন। আমার রেজেক্সটি কিছুটা মরিচা, তবে প্যাটার্নটি এমন কিছু হবে:

\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}

এটি উদাহরণস্বরূপ একটি ডিডি / এমএম / ওয়াইওয়াই ফর্ম্যাট পাশাপাশি একটি ডিএম-ওয়াই ফর্ম্যাট এবং এর অনুক্রমের সাথে মিলবে।

আপনি যদি / থেকে তারিখের ফর্ম্যাটটি পার্স করতে চান তবে আপনি এই অনুসন্ধান স্ট্রিংটি ব্যবহার করতে পারেন:

\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}\s*to\s*\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}

অবশ্যই, আপনি এটি একটি রেইজেক্স ইঞ্জিনের মাধ্যমে চালানো এবং আউটপুট সংগ্রহ করতে হবে।

তারপরে আপনি বলেছিলেন যে আউটপুট মানক করা যায় তাই এটি সমস্ত একটি ডিডি / এমএম / ওয়াইওয়াই ফর্ম্যাটের সাথে মেলে - যদিও আমাকে বলতে হবে যে আমি কীভাবে কম্পিউটার অনুসন্ধানের জন্য সূচী জিনিসগুলি দেওয়া হয় তা ওয়াইওয়াই-এমএম-ডিডি পছন্দ করি । আপনি সংখ্যার গোষ্ঠীভুক্ত করে এবং অনুসন্ধান এবং প্রতিস্থাপনের মাধ্যমে তাদের পুনর্বিন্যাসের মাধ্যমেও রেগেক্সের সাহায্যে এটি করতে পারেন। যদি এমন কিছু মনে হয় যা আপনি চেষ্টা করতে আগ্রহী হন তবে আমাকে জানান।

শেষ পর্যন্ত, আপনি স্ট্যান্ডার্ডাইজড আউটপুট গ্রেগরিয়ান ক্যালেন্ডারে রূপান্তর করতে চাইতে পারেন। বছরের জন্য মান 1900 বা কিছু বলার চেয়ে কম হলে কোনও এক্সেল সূত্র গণনা চালিয়ে আপনি যা করতে পারেন।

ভাগ্য সুপ্রসন্ন হোক. স্ক্রিপ্টস এবং রেজেক্স প্রচুর সাহায্য করে যদিও এর মতো ডেটা মানক করা দুঃস্বপ্ন হতে পারে।


আমি এটি চেষ্টা করে দেখতে চাই প্রক্রিয়াটির সাথে জড়িত পরবর্তী পদক্ষেপগুলি কী তা আমাকে জানতে দিন।
হেরুব্র্যান্ড

@ হেরুব্র্যান্ড শিগগির জবাব না দেওয়ার জন্য দুঃখিত। বুঝতে পারি নি যে এটি সম্পর্কে কেউ অনুসন্ধান করেছে। এটি করার উপায়টি হল: আপনার যদি 12/04/2017 থাকে যা সাধারণত আমেরিকান। আপনি যেখানে অনুসন্ধান করতে পারেন এবং প্রতিস্থাপন করতে পারেন যেখানে আপনি প্যাটার্নটি অনুসন্ধান করেছেন: (\d{1,2})\/(\d{1,2})\/(\d{2,4}) এবং এটি প্যাটার্নের সাথে প্রতিস্থাপন করুন \3-\1-\2 তবে কেবল একটি অনুসন্ধান করুন এবং সমস্ত প্রতিস্থাপন করুন। অবশেষে, যদি বছরগুলি 2000 এর পরে উদাহরণস্বরূপ হয় এবং তারা কেবল 2 ডিজিট বছরের সূত্র ব্যবহার করে তবে আপনি তার জন্য অনুসন্ধান করতে পারেন (\d\d)[\s|$]এবং এটির সাথে প্রতিস্থাপন করতে পারেন এটি \/20\1আমার মনে হয় কাজ করা উচিত।
খ্রিস্টান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.