12.26.2016 বা 26/12/2016 (ইউকে ফর্ম্যাট) হিসাবে সরবরাহিত স্প্রেডশীটে আমরা কত ঘন ঘন তারিখগুলি পাই, কেবলমাত্র তারিখটি অবৈধ বা 26 মাস নেই বলার জন্য? এই নিবন্ধটি টিআরআইএম, বাম, সঠিক এবং এমআইডি ফাংশন ব্যবহার করে ভিবিএর সাথে ফিক্সিংয়ের তারিখগুলি সন্ধান করে।
নিবন্ধটি ধরে নিয়েছে পাঠকের বিকাশকারী ফিতাটি প্রদর্শিত হয়েছে এবং এটি ভিবিএ সম্পাদকের সাথে পরিচিত। যদি তা না হয় তবে দয়া করে গুগল "এক্সেল বিকাশকারী ট্যাব" বা "এক্সেল কোড উইন্ডো"।
এই অনুশীলনের এক্সএলএসএম ডাউনলোড করা যায় এখানে.
আমাদের সমস্যা নয়!
সমস্যা সমাধানের সেরা স্থানটি উত্স at যাইহোক, কোনও পরিমাণ অনুশাসনই এই ক্ষেত্রে বেতন-বিভাগকে বোঝাতে পারে না যে 12.26.1994 একটি বৈধ তারিখ নয় (যদি না কিছু পূর্ব ইউরোপীয় দেশের কম্পিউটারের নিয়ন্ত্রণ প্যানেলে কনফিগার করা থাকে)।
আসলে আমরা প্রমাণ করতে পারি এটি মেশিন-পঠনযোগ্য নয়। উদাহরণস্বরূপ, একটি তারিখে 7 দিন যুক্ত করা:
"=01.01.2017 + 7" = #VALUE. "=2017.01.01 + 7" = #VALUE.
যেখানে…
"=2017-01-01 + 7" = 2017/01/08.
আসুন ধরে নেওয়া যাক তারা পরামর্শ দেয় এটি তাদের সমস্যা নয়।
তারিখ বিন্যাস
আমাদের প্রথম যে জিনিসটি নির্ধারণ করতে হবে তা হ'ল তারিখটি মার্কিন যুক্তরাষ্ট্রে রয়েছে বা আন্তর্জাতিক বিন্যাসে।
আমাদের উদাহরণটি স্পষ্ট করে তোলে যে আমরা ইউএসএ ব্যবহারের দিকে নজর দিচ্ছি, অর্থাত্ MDY আন্তর্জাতিক বিন্যাসের চেয়ে ডিএমওয়াইয়ের চেয়ে।
একবার উত্সটি প্রতিষ্ঠিত হয়ে গেলে, আমাদের ডাটা ফর্ম্যাটগুলি পরিবর্তন করতে হবে যাতে এক্সেল সেগুলি আন্তর্জাতিকভাবে বা মার্কিন যুক্তরাষ্ট্রে উপলব্ধি করতে পারে।
এটি করার সর্বোত্তম উপায় হ'ল yyyymmdd তারিখটি পরিবর্তন করা, এমন বিন্যাস যাতে কোনও যোগ্যতার প্রয়োজন হয় না।
প্রক্রিয়া
উত্স দেশ অনুসারে তারিখটি "সংশোধন" করতে একটি ফাংশনকে ডেকে আমরা নথির প্রতিটি সারিটি ঘুরে দেখব। তারিখটি সংশোধন হয়ে গেলে, আমরা কর্মচারীর বয়স গণনা করব।
কোড
একটি নতুন মডিউলে নিম্নলিখিত কোডটি অনুলিপি করুন:
Option Explicit
Sub Main()
Dim strNewFormat As String
Dim strDate As String
Sheets("Main").Range("B4").Select
'Cycle through the sheet rows, using IDNumber as an anchor
'to prevent a premature halt caused by a blank date of birth
Do While ActiveCell > ""
If ActiveCell.Offset(0, 2) > "" Then
strDate = ActiveCell.Offset(0, 2)
'Remove leading or trailing spaces
strDate = Trim(strDate)
'Call the function
strNewFormat = ReformatDate(strDate, "USA")
'Write the result from the function ReformatDate to a new column
ActiveCell.Offset(0, 3) = strNewFormat
'Determine age by subtracting the previous column from today's date
ActiveCell.Offset(0, 4) = "=(NOW()-RC[-1])/365.25"
'Convert to intger, thus lopping off decimal places
ActiveCell.Offset(0, 4) = Int(ActiveCell.Offset(0, 4))
End If
Range("B" & ActiveCell.Row + 1).Select
Loop
End Sub
Function ReformatDate(sDate As String, sSource As String)
Dim yyyy, mm, dd As String
yyyy = Right(sDate, 4)
If sSource = "USA" Then
mm = Left(sDate, 2)
dd = Mid(sDate, 4, 2)
Else
mm = Mid(sDate, 4, 2)
dd = Left(sDate, 2)
End If
ReformatDate = yyyy & "-" & mm & "-" & dd
End Function
আপনার ফর্মটিতে একটি বোতাম যুক্ত করুন এবং এটি সাব মেইনকে নিয়োগ করুন।
বিচারকার্য স্থগিত রাখার আদেশ
আপনার মডিউলে খুব বেশি জটিল কোড যুক্ত করার আগে আপনাকে পরামর্শ দিন যে এক্সেল সর্বদা বড় অ্যাপ্লিকেশন বিকাশে স্থিতিশীল থাকে না এবং প্রায়শই ক্ষতিগ্রস্থ কোডটি পুনরুদ্ধার করতে অক্ষম হয়। ফলাফলটি কেবল আপনার অনুলিপিটির দুর্নীতি হতে পারে যেহেতু "সংরক্ষণ করুন" তে দুর্নীতি ঘটে।
ঘন ঘন ব্যাক আপ করুন এবং ঠিক করার জন্য কোনও সরঞ্জাম ব্যবহার করুন এক্সেল ফাইল দুর্নীতি.
লেখকের ভূমিকা:
ফেলিক্স হুকার একটি ডেটা রিকভারি বিশেষজ্ঞ DataNumen, ইনক। যা তথ্য পুনরুদ্ধারের প্রযুক্তিগুলির সহ বিশ্বের শীর্ষস্থানীয় মেরামত rar ফাইল দুর্নীতি এবং স্কয়ার পুনরুদ্ধার সফ্টওয়্যার পণ্য। আরো তথ্যের জন্য, যান WWW.datanumen.com
