এই প্রশ্নটি কিছুটা পুরানো, তবে আজ পর্যন্ত এটির কোনও উত্তর আছে বলে মনে হয় না। আমি বেশ কয়েকটি সাইটে একই ধরণের প্রশ্নও দেখেছি, তবে এখনও এমন কোনও উত্তর খুঁজে পাইনি যার মধ্যে কেবল অন্তর্নির্মিত এক্সেল ফাংশন জড়িত। তবে ভিবিএ দিয়ে এটি সমাধান করা বেশ সহজ। এটি করার জন্য আপনাকে কীভাবে প্রোগ্রাম করবেন তাও আপনাকে জানতে হবে না, কারণ প্রয়োজনীয় ফাংশনটি এত সহজ।
আপনার ওয়ার্কবুক খোলার সাথে, কেবল Alt + F11 টিপুন (ভিবিএ সম্পাদক খোলার জন্য) তারপরে মেনু আইটেমটি সন্নিবেশ করুন > মডিউলটি
নতুন ভিবিএ মডিউলে ক্লিক করুন :
Public Function FMT$(ByVal Value, ByVal strFormat)
FMT = VBA.Format$(Value, strFormat)
End Function
এটি যা করে তা হ'ল Format
এক্সেলের ফাংশনের পরিবর্তে ভিবিএর নিজস্ব ফাংশন ব্যবহার করা TEXT
। এটি আপনি চান ঠিক কি।
এই নতুন ফাংশনটি যে কোনও তারিখ (বা সংখ্যা) ফর্ম্যাট করবে আপনার যে কোনও ফর্ম্যাট স্ট্রিং নির্দিষ্ট করে। অপারেটিং সিস্টেমের আঞ্চলিক সেটিংস নির্বিশেষে এটি স্ট্যান্ডার্ড ( এন-ইউএস ) স্বরলিপি ব্যবহার করে ফর্ম্যাট স্ট্রিংটির ব্যাখ্যা করবে ।
আপনার ওয়ার্কবুকে এটি ব্যবহার করতে, কেবল =FMT(A1, "yyyymmdd_hhss")
পরিবর্তে টাইপ করুন =TEXT(A1, "yyyymmdd_hhss")
। (অবশ্যই আপনি প্রয়োজনীয় হিসাবে ঘর উল্লেখ এবং ফর্ম্যাট স্ট্রিং পরিবর্তন করতে পারেন।)
যাইহোক, আপনি যা চান ফাংশনটির নাম দিতে পারেন। আমি পছন্দ করেছি FMT
কারণ এটি সংক্ষিপ্ত ছিল এবং কারণ ফাংশনটি সংখ্যা এবং তারিখ দুটি বিন্যাস করতে পারে। আপনি চাইলে আপনি আরও বর্ণনামূলক কিছু চয়ন করতে পারেন। ভিবিএ কোডের মতো আপনার ওয়ার্কশিটে একই নামটি ব্যবহার করতে ভুলবেন না।
মনে রাখবেন যে ভিবিএ ফর্ম্যাট স্ট্রিংগুলি এক্সেলের কাস্টম বিন্যাসের স্ট্রিংগুলির মতো হুবহু নয় (উদাহরণস্বরূপ, কয়েক মিনিটের জন্য "মি" এর পরিবর্তে "এন" ব্যবহার করুন) তবে সেগুলি খুব সাদৃশ্যপূর্ণ। দেখুন এখানে বিস্তারিত জানার জন্য, বা "ফরম্যাট ফাংশন (ফর এপ্লিকেশনস ভিসুয়াল বেসিক)" এর জন্য অনুসন্ধান দুটিই MSDN। বিভিন্ন তারিখের ফর্ম্যাট স্পেসিফায়ারগুলি দেখতে নীচে স্ক্রোল করুন।
পদ্ধতি 2
ভিবিএ ব্যবহার করে এমন আরও একটি পদ্ধতি, তবে এটি বজায় রাখা সহজতর হতে পারে:
- সাধারণ সেল ফর্ম্যাট ডায়ালগটি ব্যবহার করে কোনও কক্ষে আপনার পছন্দসই তারিখের ফর্ম্যাটটি প্রয়োগ করুন। আপনি যদি পছন্দ করেন তবে এই ঘরটি কোনও লুকানো শীটে থাকতে পারে - এটিকে শেষ-ব্যবহারকারীর কাছে প্রদর্শন করার দরকার নেই। আসুন ধরে নেওয়া যাক
yyyymmdd\_hhss
আপনি ঘর $ A to 1 এ ফর্ম্যাটটি প্রয়োগ করেছেন (নোট করুন যে আন্ডারস্কোরটি অবশ্যই প্রদর্শিত হবে) escaped
- যোগ
GetFormat
ফাংশন (নিচে দেখানো) আপনার ওয়ার্কবুক একটি VBA মডিউল করতে।
=GetFormat($A$1, TRUE)
অন্য একটি ঘরে প্রবেশ করুন (যেমন $ B $ 1 )
- এই ফাংশনটি ফর্ম্যাট স্ট্রিংয়ের স্থানীয়ীকৃত সংস্করণটি ফিরিয়ে দেবে । সুতরাং যদিও আপনি মূলত ফরম্যাট , $ A $ 1 দিয়ে
yyyymmdd\_hhss
, যখন আপনি ফরাসি ভাষা (উদাহরণস্বরূপ) ব্যবহার করে একটি কম্পিউটারে ওয়ার্কবুক খুলুন, ফাংশন প্রদর্শন করবে aaaammjj\_hhss
।
- এখন কেবলমাত্র আপনার সমস্ত কার্যক্রমে দ্বিতীয় কক্ষটি উল্লেখ করুন
TEXT
। উদাহরণস্বরূপ: =TEXT(F22, $B$1)
।
এখানে ভিবিএ কোডটি রয়েছে:
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
এটি আমাদের স্থানীয় ফর্ম্যাট-স্ট্রিং পুনরুদ্ধার করতে আপনার মূলত ফর্ম্যাট করা ঘর (insp A $ 1) "পরীক্ষা করতে" অনুমতি দেয়। স্ট্রিংটি আপনি প্রয়োগ করেছেন একই ফর্ম্যাটটিকে উপস্থাপন করবে, তবে এটি Txt- এর সঠিক বর্ণগুলি ব্যাখ্যার জন্য ব্যবহার করবে (উদাহরণস্বরূপ "d" এর পরিবর্তে "j"), তাই তারিখগুলির প্রদর্শিত মান সমস্ত লোকেল জুড়ে স্থির থাকবে। আপনি যদি আপনার পুরো ওয়ার্কবুকের জন্য কেবল একটি তারিখের ফর্ম্যাট ব্যবহার করতে চান তবে আপনার একবার মাত্র 1-4 টি পদক্ষেপ করা দরকার। তারপরে আপনি বর্তমানে এটি ব্যবহার করছেন এমন সমস্ত কক্ষে পদক্ষেপ 5 (টিএসএক্স ফাংশন) পুনরাবৃত্তি করুন, তবে বিন্যাসকে হার্ড-কোডিংয়ের পরিবর্তে আপনি কেবলমাত্র সেই সেলটি উল্লেখ করতে পারেন যেখানে স্থানীয়করণকৃত বিন্যাস-স্ট্রিং রয়েছে ( উদাহরণ নির্দেশে $ বি $ 1 ) ।
নোট করুন যে GetFormat
স্থানীয় যুক্ত সংস্করণ (যা আঞ্চলিক সেটিংসের উপর নির্ভর করে) বা "মানক" সংস্করণ (যা সর্বদা এন-ইউএসের উপর ভিত্তি করে) ফিরিয়ে দেয় কি না সে সম্পর্কে ফাংশনটি জানাতে দ্বিতীয় যুক্তি ।
এখানে কিছু স্ক্রিন-শট রয়েছে যা এটি আরও পরিষ্কার করে দিতে পারে।
- চিত্রটিতে, কলাম 1 বিভিন্ন ফর্ম্যাট প্রয়োগের সাথে একক তারিখের বেশ কয়েকটি উপস্থাপনা তালিকাবদ্ধ করে।
- নোট করুন যে 2 এবং 3 সারিগুলি এক্সেলের "সিস্টেম ডিফল্ট" তারিখের ফর্ম্যাটগুলি ব্যবহার করে। (এগুলি ফর্ম্যাট ডায়ালগের শীর্ষস্থানীয় নক্ষত্র দ্বারা নির্দেশিত এবং তারা ইঙ্গিত দেয় যে ব্যবহারকারীর ডিফল্ট তারিখের ফর্ম্যাটটি ব্যবহার করা উচিত।) এছাড়াও মনে রাখবেন যে সারি 5 একটি বন্ধনীযুক্ত এলসিআইডি ব্যবহার করে, যা মাস এবং দিনের নামের জন্য ব্যবহৃত ভাষাটিকে ইংরেজী হতে বাধ্য করে ( অন্যান্য এলসিআইডি অন্যান্য ভাষা নির্দিষ্ট করতে ব্যবহার করা যেতে পারে)।
- দ্বিতীয় কলামটি
GetFormat(Cell, FALSE)
কলাম 1 এর প্রতিটি কক্ষের ফলাফল দেখায় ((মনে রাখবেন যে FALSE
দ্বিতীয় প্যারামিটারের জন্য ফাংশনটি নন-স্থানীয়ীকৃত ফর্ম্যাটগুলি ফেরত দেয় )।
- তৃতীয় কলামটি
GetFormat(Cell, TRUE)
2 কলামে প্রতিটি কক্ষের জন্য কী প্রদান করবে তা দেখায় ie (যেমন স্থানীয় রূপগুলি)।
- চতুর্থ কলামটি মূল, কাঁচা তারিখের মান এবং স্থানীয়করণের ফলাফল ব্যবহার
GetFormat
করে কলাম ১-এ প্রদর্শিত ফর্ম্যাটটি পুনরায় উত্পাদন করতে টেক্সট ফাংশনের ফলাফল দেখায় Note তবে নোট করুন যে এই কলামটিতে কোনও নম্বর বিন্যাস প্রয়োগ করা হয়নি। মানগুলি হ'ল পাঠ্য ফাংশনের প্রত্যক্ষ ফলাফল।
উপরের ইংলিশ (ইউএস) মামলার ফলাফলগুলি খুব আকর্ষণীয় নয়, তবে আপনি সেগুলি নিম্নলিখিত অপসারণের সাথে তুলনা করতে পারেন যা আমার অপারেটিং সিস্টেমের আঞ্চলিক সেটিংসকে অন্যান্য বিভিন্ন লোকালয়ে পরিবর্তন করে প্রাপ্ত হয়েছিল। গুরুত্বপূর্ণভাবে, নোট করুন যে GetFormat
সংমিশ্রণে TEXT
আমরা ব্যবহার করে সমস্ত লোকেল জুড়ে সংখ্যাসূচক ফর্ম্যাটগুলির (যেগুলিতে দিন বা মাসের নাম অন্তর্ভুক্ত নয়) জন্য ধ্রুবক ফলাফল ধরে রাখতে সক্ষম। এবং এলসিআইডি ব্যবহার করে ভাষা সীমাবদ্ধ করে (সারি 5 হিসাবে) আমরা এমনকি দিন এবং মাসের নামও অন্তর্ভুক্ত করার সময় ধ্রুবক বিন্যাস ধরে রাখতে পারি।
এই পদ্ধতিটি বেশিরভাগ লোকেলের জন্য কাজ করে, তবে এটি লক্ষ করা উচিত যে হিন্দু-আরবি সংখ্যার প্রতিনিধিত্ব করতে ব্যবহৃত স্ক্রিপ্টগুলি সমস্ত লোকালে এক নয়। সুতরাং নেপালি (ভারত) লোকালের মতো আঞ্চলিক সেটিংসের ফলে তারিখের ফর্ম্যাটগুলির ফলাফল হবে যা মার্কিন যুক্তরাষ্ট্রে তারিখের চেয়ে আলাদা "চেহারা"। তবে এটি আসলে সংখ্যার অবস্থানের ক্ষেত্রে একই "বিন্যাসে" রয়েছে - তারা কেবল সংখ্যার জন্য বিভিন্ন চিহ্ন ব্যবহার করে।