اکستنشن تبدیل تاریخ میلادی به خورشیدی اکسل – معرفی و آموزش استفاده


افزونه یا اکستنشن تبدیل تاریخ میلادی به خورشیدی در اکسل، یک برنامه کمکی برای اضافه کردن قابلیت نمایش تاریخهای میلادی به صورت تاریخهای خورشیدی است. فرض کنید در حال کار بر روی یک فایل اکسل با تاریخهای میلادی هستید و میخواهید دادههای این فایل را به منظور تهیه یک گزارش فارسی مورد استفاده قرار دهید. در این شرایط، اگر نسخه اکسل شما ۲۰۱۶ یا جدیدتر باشد، با مشکل خاصی مواجه نمیشوید اما اگر نسخه اکسل شما ۲۰۱۳ یا قدیمیتر باشد، باید به سراغ روشهایی نظیر فرمولنویسی یا نصب اکستنشن بروید. در این مطلب از مجله فرادرس، قصد داریم به معرفی و آموزش استفاده از افزونه یا اکستنشن تبدیل تاریخ میلادی به خورشیدی اکسل بپردازیم.
به منظور آموزش کار با افزونه تبدیل تاریخ میلادی به خورشیدی، ابتدا مفهوم اکستنشن در نرمافزار اکسل را تعریف میکنیم. سپس، نیاز یا عدم نیاز شما به اکستنشن تبدیل تاریخ میلادی به خورشیدی در اکسل را مورد بررسی قرار میدهیم. پس از آن، ضمن ارائه لینک دانلود اکستنشن فارسیتولز، به توضیح مراحل نصب تا استفاده از این اکستنشن میپردازیم. در ادامه، یک یک اکستنشن کاملتر با قابلیتهای بیشتر را معرفی میکنیم. سپس، ضمن مرور نحوه تنظیم نمایش فارسی اعداد تاریخ، نحوه ساخت یک اکستنشن ساده را آموزش میدهیم. در نهایت، به توضیح سریع مراحل تبدیل تاریخ میلادی به خورشیدی بدون اکستنشن (در اکسل ۲۰۱۶ یا جدیدتر) میپردازیم.
اکستنشن تبدیل تاریخ میلادی به خورشیدی اکسل چیست؟
افزونه یا «اکستنشن» (Extension)، یک برنامه نرمافزاری کوچک و تکمیلی است که قابلیتهای برنامه اصلی را بهبود میبخشد. به عنوان مثال، در اکسل نسخه ۲۰۱۳ و نسخههای قدیمیتر، امکان تبدیل مستقیم تاریخ میلادی به خورشیدی وجود ندارد. با این وجود، شما میتوانید با نصب یک اکستنشن، این قابلیت را به اکسل خود اضافه کنید. البته شاید شما اصلا به این اکستنشن نیازی نداشته باشید.
آیا برای تبدیل تاریخ میلادی به خورشیدی در اکسل به اکستنشن نیاز داریم؟
برای اینکه بدانید آیا جهت تبدیل تاریخ میلادی به تاریخ خورشیدی در اکسل، به افزونه یا اکستنشن خاصی نیاز دارید یا خیر، باید به نسخه نرمافزار خود نگاه کنید.
در صورت استفاده از نسخه ۲۰۱۶ یا نسخههای جدیدتر اکسل، نیازی به نصب اکستنشن تبدیل تاریخ نیست. اگر از نسخه دقیق اکسل خود اطلاعی ندارید، از قسمت بالا-چپ در صفحه اصلی، بر روی «File» کلیک کنید.

پس از کلیک بر روی File، صفحهای با یک منوی کناری مشابه تصویر زیر به نمایش درمیآید.

با کلیک بر روی گزینه «Account» در منوی کناری صفحه File، اطلاعات مربوط به نسخه اکسل در سمت راست صفحه نشان داده میشود. به عنوان مثال در تصویر زیر، نسخه اکسل نصب شده بر روی سیستم ما، ۲۰۲۱ است.

اگر نسخه نصب شده بر روی سیستم شما نیز ۲۰۱۶ یا جدیدتر بود، به انتهای مطلب بروید. در انتهای مطلب، یک روش ساده و سریع را برای تبدیل تاریخ میلادی به خورشیدی در اکسل، بدون نیاز به اکستنشن آموزش دادهایم. در غیراینصورت، با مطالعه بخش بعدی همراه ما باشید.
تبدیل تاریخ میلادی به خورشیدی با اکستنشن فارسیتولز
تبدیل تاریخ میلادی به خورشیدی با اکستنشن «فارسیتولز» (FarsiTools)، کار نسبتا سادهای است. البته فرآیند نصب اکستنشن، شاید برای کاربران مبتدی کمی پیچیده به نظر برسد. در این بخش، این فرآیند را به زبان ساده و به صورت گام به گام و تصویری توضیح میدهیم.
دانلود اکستنشن فارسیتولز برای تبدیل تاریخ میلادی به خورشیدی در اکسل
به منظور شروع نصب اکستنشن فارسیتولز برای تبدیل تاریخ میلادی به خورشیدی اکسل، ابتدا آن را توسط لینک زیر دانلود کنید:
- دانلود اکستنشن فارسیتولز برای تبدیل تاریخ میلادی به خورشیدی (+)
اکستنشن فارسیتولز، از قابلیتهایی نظیر تبدیل تاریخ میلادی به خورشیدی، تبدیل تاریخ خورشیدی به میلادی و تبدیل عدد به حروف فارسی بهره میبرد. البته اگر به دنبال عملکردهای بیشتری مانند نمایش تاریخ خورشیدی روز فعلی، محاسبه فاصله بین دو تاریخ خورشیدی و غیره هستید، کار با یک اکستنشن کاملتر را نیز توضیح خواهیم داد.
خارج کردن افزونه فارسیتولز از حالت فشرده
فایلهایی که برای دانلود در اختیار شما قرار میدهیم، دارای فرمت فشردهسازی Zip هستند. بنابراین، پیش از نصب افزونه تبدیل تاریخ میلادی به خورشیدی، باید با استفاده از روشهای استخراج فایلهای فشرده، آنها را از حالت فشرده خارج کنید.

اکستنشهای اکسل معمولا دارای فرمت «xla» یا «xlam» هستند. البته امکان مواجهه با اکستنشهای دارای فرمت «xll» یا «xlsb» نیز وجود دارد. فرمت اکستنشن فارسیتولز، xla است.
نصب افزونه فارسیتولز برای تبدیل تاریخ میلادی به خورشیدی در اکسل
برای شروع نصب، فایل اکستنشن را باز کنید. با توجه به تنظیمات امنیتی اکسل شما، امکان مواجهه با پیغامی مشابه تصویر زیر وجود دارد. البته جای نگرانی نیست. در بخشهای بعدی، نحوه غیرفعال کردن این پیغام را توضیح میدهیم.

برای ادامه، بر روی «Enable Macros» کلیک کنید تا قابلیت ماکرونویسی در اکسل برای این اکستنشن فعال شود. اکنون باید اکستنشن را به فهرست اکستنشهای فعال اکسل اضافه کنید. با کلیک بر روی File و انتخاب «Options» از منوی کناری، پنجره «Excel Options» به نمایش درمیآید. این پنجره، گزینههای زیادی را برای اعمال تنظیمات دلخواه در اختیار کاربران قرار میدهد. یکی از این تنظیمات، اضافه کردن افزونه است.

بخش «Add-ins» در پنجره تنظیمات اکسل، به قابلیت اضافه کردن اکستنشن اختصاص دارد. پس از کلیک بر روی عنوان این بخش، فهرست اکستنشهای فعال و غیرفعال در سمت راست پنجره ظاهر میشود. برای اضافه کردن اکستنشن تبدیل تاریخ میلادی به خورشیدی، بر روی دکمه «Go» کلیک کنید تا پنجره زیر به نمایش درآید.

در بخش «Add-ins available»، عنوان اکستنشنهای دردسترس برای فعالسازی آورده شده است. بر روی «Browse» کلیک کنید و به مسیر استخراج فایلهای اکستنشن تبدیل تاریخ میلادی به خورشیدی بروید.

با کلیک بر روی «OK»، اکستنشن انتخابی به فهرست اکستنشنهای دردسترس اضافه میشود.

تیک کنار عنوان اکستنشن جدید را فعال کرده و بر روی OK کلیک کنید. به این ترتیب، قابلیت تبدیل تاریخ میلادی به خورشیدی به اکسل شما افزوده میشود. اکستنشن اول، فرمولهای زیر را به اکسل شما اضافه میکند:
- m2s() : این تابع تاریخ میلادی را به عنوان پارامتر ورودی دریافت میکند و تاریخ خورشیدی را به عنوان خروجی نمایش میدهد.
- s2m() : این تابع تاریخ خورشیدی را به عنوان پارامتر ورودی دریافت میکند و تاریخ میلادی را به عنوان خروجی نمایش میدهد.
- horofi() : این تابع یک عدد را به عنوان پارامتر ورودی دریافت میکند و آن را به صورت حروف نمایش میدهد.
- three() : این تابع یک عدد حداکثر سهرقمی را به عنوان پارامتر ورودی دریافت میکند و آن را به صورت حروف نمایش میدهد.
برای آشنایی با نحوه استفاده از توابع بالا برای تبدیل تاریخ میلادی به خورشیدی، مثال زیر را در نظر بگیرید.

میخواهیم معادل خورشیدی تاریخ میلادی نوشته شده در سلول «B3» را در سلول «C3» نمایش دهیم. به این منظور، ابتدا بر روی سلول C3 کلیک میکنیم و سپس فرمول =m2s(B3) را درون آن مینویسیم. در انتها، کلید «Enter» را میفشاریم.

تابع m2s، تاریخ میلادی سلول B3 را میگیرد و پس از انجام محاسبات، معادل خورشیدی آن را در سلول C3 نمایش میدهد.

یکی دیگر از روشهای استفاده از فرمولهای اکستنشن تبدیل تاریخ میلادی به خورشیدی، وارد کردن مستقیم تاریخ مورد نظر در آن است. به عنوان مثال، تاریخ میلادی نوشته شده در سلول C3 را به طور مستقیم و به صورت فرمول =m2s("1/1/2025") در سلول «C4» مینویسیم.

توجه کنید که حتما باید تاریخ میلادی را بین دو علامت نقل قول (") وارد کنید. نکته دیگری که باید آن را مورد توجه قرار دهید، قالب تاریخ میلادی در اکسل است. در اکسل ۲۰۲۱، قالب پیشفرض تاریخ میلادی به صورت «سال/روز/ماه» در نظر گرفته میشود. البته این قالب قابل تغییر است اما بهتر است ترتیب روز و ماه را در آن بررسی کنید. در بخشهای بعدی، به تنظیمات مرتبط با قالببندی تاریخ نظیر ترتیب روز/ماه/سال و نمایش تاریخ با اعداد فارسی خواهیم پرداخت.
فرادرس، یک فیلم آموزشی کاربردی را با عنوان «آموزش کاربرد اکسل در حسابداری و مدیریت» تهیه کرده است که در یکی از بخشهای آن به طور خاص به مبحث تبدیل تاریخ در اکسل پرداخته میشود. لینک مشاهده این آموزش در ادامه اورده شده است.
چگونه قابلیتهای کاربردی اکسل را با فرادرس یاد بگیریم؟

اکسل، یکی از بهترین و کاربردیترین نرمافزارهای اداری است که یادگیری قابلیتهای آن، مسیر پیشرفت حرفهای شما را هموارتر میکند. اغلب شرکتها، این نرمافزار را به منظور انجام محاسبات، تهیه گزارشها، مرتبسازی دادهها و بسیاری از فعالیتهای دیگر مورد استفاده قرار میدهند. بنابراین، پیشنهاد میکنیم تقویت مهارتهای خود در زمینه کار با اکسل را در برنامههای خود قرار دهید. البته برای این کار، به منابع آموزشی جامع و مفید نیاز دارید.
بهترین منابع یادگیری اکسل، ضمن بیان اصول مقدماتی و عمومی، نحوه کار با ابزارهای پیشرفته و تخصصی را به همراه حل مثالهای کاربردی توضیح میدهند. فرادرس، مجموعهای از فیلمهای آموزشی جامع را در سطوح ابتدایی تا حرفهای تهیه کرده است که میتواند شما را در یادگیری کامل اکسل کمک کند. لینک مشاهده برخی از پرطرفدارترین آموزشهای این مجموعه در ادامه آورده شده است.
- فیلم آموزش اکسل ۲۰۲۱ فرادرس
- فیلم آموزش ابزارهای کاربردی اکسل فرادرس
- فیلم آموزش ترفندهای کاربردی در اکسل فرادرس
- فیلم آموزش استفاده از توابع و فرمولنویسی در اکسل فرادرس
- مجموعه فیلمهای آموزش مقدماتی تا پیشرفته اکسل فرادرس
تبدیل تاریخ میلادی به خورشیدی با یک اکستنشن کاملتر
در بخش قبلی، مراحل تبدیل تاریخ میلادی به خورشیدی را با استفاده از اکستنشن ساده و کاربردی فارسیتولز آموزش دادیم.
اگر میخواهید از قابلیتهای بیشتری برای کار با تاریخهای خورشیدی در اکسل بهره ببرید، اکستنشن زیر را دانلود کنید.
- دانلود اکستنشن دوم تبدیل تاریخ میلادی به خورشیدی (+)
پس از خارج کردن اکستنشن دوم از حالت فشرده، مطابق با مراحل زیر، آن را به فهرست اکستنشنهای اکسل اضافه کنید:
- کلیک بر روی File در منوی بالای پنجره نرمافزار
- انتخاب Options در انتهای نوار کناری
- رفتن به بخش Add-ins در پنجره Excel Options
- کلیک بر روی دکمه Go در پایین پنجره
- کلیک بر روی دکمه Browse در کادر Add-ins
- رفتن به پوشه حاوی اکستنشن
- انتخاب فایل اکستنشن و کلیک بر روی Open
- فعالسازی تیک کنار عنوان اکستنشن در کادر Add-ins
- کلیک بر روی OK
تنها نکتهای که در هنگام طی کردن مراحل بالا باید در نظر بگیرید، ۶۴ بیتی یا ۳۲ بیتی بودن اکسل نصب شده بر روی سیستمتان است. برای بررسی این موضوع، پس از کلیک بر روی File و رفتن به بخش Account، گزینه «About Excel» را انتخاب کنید.

با کلیک بر روی About Excel، پنجرهای حاوی اطلاعات تکمیلی در مورد نسخه نصب شده به نمایش درمیآید.

به عنوان مثال تصویر بالا نشان میدهد که نسخه نصب شده بر روی سیستم ما، ۶۴ بیتی است. بنابراین، هنگام انتخاب فایل اکستنشن، باید نسخه ۶۴ بیتی را انتخاب کنیم. این اکستنشن، توابع زیادی را برای تبدیل تاریخ میلادی به خورشیدی و انجام محاسبات مختلف بر روی تاریخها به اکسل اضافه میکند. برخی از این توابع عبارت هستند از:
- nPersianConvertFromGregorian() : این تابع، تاریخ میلادی را به عنوان پارامتر ورودی Date میگیرد و تاریخ خورشیدی معادل آن را نمایش میدهد. پارامتر ورودی Format، یک پارامتر غیرالزامی است که عدد ۱ را برای قالب تاریخ میلادی سال/روز/ماه و عدد ۲ را برای قالب تاریخ میلادی سال/ماه/روز دریافت میکند. این پارامتر به صورت پیشفرض بر روی ۱ قرار دارد.
- nPersianConvertToGregorian() : این تابع، تاریخ خورشیدی را به عنوان پارامتر ورودی میگیرد و تاریخ میلادی معادل آن را نمایش میدهد.
- nPersianToday(): این تابع، بدون گرفتن پارامتر ورودی، تاریخ خورشیدی امروز را نمایش میدهد.
- nPersianDateDiff() : این تابع، تاریخ ابتدایی و انتهایی را به عنوان پارامترهای ورودی StartDate و EndDate میگیرد و فاصله بین دو تاریخ وارد شده را نمایش میدهد. پارامتر ورودی DatePart، یک پارامتر غیرالزامی است که امکان انتخاب نحوه نمایش فاصله بین تاریخ را به صورت روز (۱)، ماه (۲)، سال (۳)، هفته (۴) و فصل (۵) فراهم میکند. مقدار پیشفرض این پارامتر بر روی ۱ قرار دارد.
- nPersianDatePart() : این تابع، تاریخ خورشیدی مورد نظر را به عنوان پارامتر ورودی Input میگیرد و بر اساس پارامتر ورودی DatePart، روز (۱)، ماه (۲) یا سال (۳) را نمایش میدهد.
تصویر زیر، نمونهای از تبدیل تاریخ میلادی به خورشیدی با استفاده از تابعnPersianConvertFromGregorian() در اکستنشن دوم را نمایش میدهد.

از دیگر توابع کاربردی اکستنشن دوم میتوان به موارد زیر اشاره کرد:
- nPersianAddDays() : افزودن تعداد روز مشخص (NumberOfDays) به تاریخ خورشیدی مورد نظر (Input)
- nPersianAddMonths() : افزودن تعداد ماه مشخص (NumberOfMonths) به تاریخ خورشیدی مورد نظر (Input)
- nPersianAddYears() : افزودن تعداد سال مشخص (NumberOfYears) به تاریخ خورشیدی مورد نظر (Input)
- nPersianDayOfWeek() : شماره روز هفته مصادف با تاریخ خورشیدی مورد نظر
- nPersianDayOfWeekName() : نام روز هفته مصادف با تاریخ خورشیدی مورد نظر
- nPersianDayOfYear() : تعداد هفتههای گذشته از ابتدای سال تا تاریخ خورشیدی مورد نظر
- nPersianIsLeapYear() : کبیسه بودن یا نبود سال خورشیدی مورد نظر
در مطلب «قالببندی سلول در اکسل (Format Cell) – به زبان ساده» از مجله فرادرس، تنظیمات قالببندی اعداد و متن در اکسل را آموزش دادیم. در ادامه، نگاهی به تنظیمات قالببندی تاریخ در اکسل خواهیم داشت.
تنظیمات قالببندی تاریخ
برای اینکه خروجی درستی از اکستنشن تبدیل تاریخ میلادی به خورشیدی دریافت کنید، باید تاریخ میلادی را بر اساس قالب درست بنویسید.
به منظور اطلاع از قالب تاریخ میلادی، پس از انتخاب زبانه «Home»، نشانگر ماوس را به سمت پنل «Number» ببرید و بر روی آیکون کوچک قرارگرفته در قسمت پایین-راست پنل کلیک کنید. البته پیش از این کار، باید سلول حاوی تاریخ میلادی را انتخاب کرده باشید.

آیکون نمایش داده شده در تصویر بالا، «Number Format» نام دارد. با کلیک بر روی این آیکون، پنجره «Format Cells» به نمایش درمیآید. این پنجره، امکان مشاهده انواع قالبها و سفارشیسازی آنها را فراهم میکند.

پس از باز شدن پنجره Format Cells، از منوی «Category» به بخش «Custom» بروید. این بخش، برای تنظیم سفارشی قالب سلول مورد استفاده قرار میگیرد. در سمت راست پنجره، به کادر زیر «Type» دقت کنید. این کادر، قالب نمایش سلول را نشان میدهد. همانطور که میبینید، تاریخ میلادی دارای قالب «m/d/yyyy» است. بنابراین از چپ به راست ابتدا ماه (m)، سپس روز (d) و در انتها سال (yyyy) نوشته میشود. شما میتوانید این قالب را به صورت دلخواه تغییر دهید یا از همان قالب پیشفرض استفاده کنید.
نکته دیگری که در این بخش به آن میپردازیم، نمایش تاریخ خورشیدی با اعداد فارسی است. این موضوع به فونت انتخابی شما بستگی دارد. در تصویر زیر، دو تاریخ خورشیدی را با دو فونت متفاوت نمایش میدهد.
در یکی از تاریخهای خورشیدی، از فونتی با قابلیت نمایش اعداد فارسی استفاده شده است و در تاریخ دیگر، فونت انتخابی اعداد را به صورت لاتین نمایش میدهد. بنابراین، نحوه نمایش فارسی یا لاتین اعداد به فونت انتخابی شما بستگی دارد و مربوط به اکستنشن تبدیل تاریخ میلادی به خورشیدی نیست.
ساخت اکستنشن تبدیل تاریخ میلادی به خورشیدی در اکسل
یکی از روشهای ساده برای تبدیل تاریخ میلادی به خورشیدی در اکسل، ساخت اکستنشن با استفاده از زبان برنامهنویسی VBA و ماکرونویسی است. شاید این کار در ابتدا بسیار پیچیده و سخت به نظر برسد اما با یک مثال ساده، مبانی آن را به صورت گام به گام و تصویری به شما آموزش میدهیم.
باز کردن محیط برنامهنویسی در اکسل
نرمافزار اکسل، از زبان برنامهنویسی VBA پشتیبانی میکند. یکی از کاربردهای این زبان برنامهنویسی، اتوماسیون محاسبات و اجرای عملیاتهای تکراری یا ماکرونویسی است. بسیاری از افزونههای اکسل، در محیط VBA ساخته میشوند. برای رفتن به این محیط، کلید ترکیبی «Alt+F11» را بفشارید. با این کار محیط برنامهنویسی در اکسل به نمایش درمیآید.

ساخت ماژول کدنویسی در اکسل
در محیط برنامهنویسی اکسل، بر روی ناحیه خالی بخش «Project - VBAProject» کلیک راست کرده و پس از رفتن به روی گزینه «Insert»، بر روی «Module» کلیک کنید.

با کلیک بر روی Module، یک پنجره برای کدنویسی باز میشود.

اکنون، کدهای زیر را کپی کرده و در پنجره مخصوص کدنویسی پیست کنید.
Public Function M2S(ByVal INNUM As Date) As String Dim ym, mm, rm As Integer If jimi = 1 Then Exit Function M2S = cM2S(Year(INNUM), month(INNUM), day(INNUM)) 'mm = Month(INNUM) End Function Public Function cM2S(ByVal ym As Integer, ByVal mm As Integer, ByVal rm As Integer) As String Dim i%(12, 1) Dim m%(12) Dim yi, mi, ri As Integer i%(1, 0) = 0 i%(2, 0) = 31 i%(3, 0) = 59 i%(4, 0) = 90 i%(5, 0) = 120 i%(6, 0) = 151 i%(7, 0) = 181 i%(8, 0) = 212 i%(9, 0) = 243 i%(10, 0) = 273 i%(11, 0) = 304 i%(12, 0) = 334 i%(1, 1) = 0 i%(2, 1) = 31 i%(3, 1) = 60 i%(4, 1) = 91 i%(5, 1) = 121 i%(6, 1) = 152 i%(7, 1) = 182 i%(8, 1) = 213 i%(9, 1) = 244 i%(10, 1) = 274 i%(11, 1) = 305 i%(12, 1) = 335 m%(1) = 0 m%(2) = 31 m%(3) = 62 m%(4) = 93 m%(5) = 124 m%(6) = 155 m%(7) = 186 m%(8) = 216 m%(9) = 246 m%(10) = 276 m%(11) = 306 m%(12) = 336 Dim f, r, r3, r2 As Integer yi = ym - 621 ' yi is iranian year r = rsm(yi) ' rsm returns day of year r3 = rm + i%(mm, km(ym) - km(ym - 1)) If r3 > r Then r2 = r3 - r Else yi = yi - 1 r2 = r3 - r + 365 + ki(yi) - ki(yi - 1) End If For f = 1 To 12 If r2 <= m%(f) Then Exit For Next f f = f - 1 ri = r2 - m%(f) mi = f Dim month As String Dim day As String If Int(Trim(str(mi))) < 10 Then month = "0" & Trim(str(mi)) Else month = Trim(str(mi)) End If If Int(Trim(str(ri))) < 10 Then day = "0" & Trim(str(ri)) Else day = Trim(str(ri)) End If cM2S = Trim(Trim(str(yi)) + "/" + month + "/" + day) End Function 'return section Private Function ki(ByVal yi As Integer) As Integer Dim y, y1, y2, y3, y4 As Integer y = yi - 508 y1 = y \ 128 y2 = y Mod 128 y3 = y2 \ 33 y4 = y2 Mod 33 ki = y1 * 31 + y3 * 8 + y4 \ 4 - y2 \ 127 - y4 \ 32 End Function Private Function km(ByVal ym As Integer) As Integer km = ((ym \ 100) - (ym \ 400) - 2) * (ym > 1581) + ym \ 4 End Function Private Function rsm(ByVal yi As Integer) As Integer rsm = ki(yi - 1) - km(yi + 620) + 363 - 8 End Function Public Function ci2m(ByVal yi As Integer, ByVal mi As Integer, ByVal ri As Integer) As String Dim i%(12, 1) Dim m%(12) i%(1, 0) = 0 i%(2, 0) = 31 i%(3, 0) = 59 i%(4, 0) = 90 i%(5, 0) = 120 i%(6, 0) = 151 i%(7, 0) = 181 i%(8, 0) = 212 i%(9, 0) = 243 i%(10, 0) = 273 i%(11, 0) = 304 i%(12, 0) = 334 i%(1, 1) = 0 i%(2, 1) = 31 i%(3, 1) = 60 i%(4, 1) = 91 i%(5, 1) = 121 i%(6, 1) = 152 i%(7, 1) = 182 i%(8, 1) = 213 i%(9, 1) = 244 i%(10, 1) = 274 i%(11, 1) = 305 i%(12, 1) = 335 m%(1) = 0 m%(2) = 31 m%(3) = 62 m%(4) = 93 m%(5) = 124 m%(6) = 155 m%(7) = 186 m%(8) = 216 m%(9) = 246 m%(10) = 276 m%(11) = 306 m%(12) = 336 Dim mk As Integer Dim f, r, r1, r2 As Integer ym = yi + 621 ' yi is iranian year r = rsm(yi) ' rsm returns day of year r1 = ri + m%(mi) r2 = r + r1 mk = km(ym) - km(ym - 1) If r2 > 365 + mk Then ym = ym + 1 r2 = r2 - 365 - mk mk = km(ym) - km(ym - 1) End If For f = 1 To 12 If r2 <= i%(f, mk) Then Exit For Next f f = f - 1 mm = f rm = r2 - i%(f, mk) ci2m = str(ym) + "/" + str(mm) + "/" + str(rm) End Function End Functionدر انتها، باید کدهای نوشته شده را ذخیره کنیم. این کار با فشردن کلید ترکیبی «Ctrl+S» قابل اجرا است.

فایلهای اکسل حاوی کدهای ماکرو، با فرمت «xlsm» ذخیره میشوند. اگر فرمت فایل فعلی شما چیزی به غیر از xlsm باشد، پیغام زیر برایتان به نمایش درمیآید.

با کلیک بر روی «Yes»، قابلیت ماکرو در فایل فعال میشود. پس از ذخیرهسازی ماکرو، از محیط VBA خارج شوید. این فرآیند، یک تابع جدید را با عنوان «M2S» به تابعهای اکسل شما اضافه میکند. کاربرد این تابع، تبدیل تاریخ میلادی به خورشیدی است.

اگر با اصول ماکرونویسی و فرمولنویسی در اکسل آشنا شوید، میتوانید کدهای ارائه شده در این بخش را بر اساس نیازهای خود تغییر دهید و حتی یک اکستنشن کامل با قابلیتهای دلخواه برای تبدیل تاریخ میلادی به خورشیدی بسازید.
در صورت علاقه با یادگیری این مهارت جذاب و کاربردی، مشاهده عناوین موجود در «مجموعه فیلمهای آموزش مقدماتی تا پیشرفته توابع و فرمول در اکسل فرادرس» را به شما پیشنهاد میکنیم. لینک مشاهده آموزشهای این مجموعه در ادامه آورده شده است.
تبدیل تاریخ میلادی به خورشیدی بدون اکستنشن
در آخرین بخش از این مطلب مجله فرادرس، قصد داریم نحوه تبدیل تاریخ میلادی به خورشیدی بدون اکستنشن را آموزش دهیم. اگر از اکسل ۲۰۱۶ یا نسخههای جدیدتر اکسل استفاده میکنید، برای تبدیل تاریخ میلادی به خورشیدی، به هیچ اکستنشنی نیاز ندارید و فقط باید تنظیمات قالب نمایش سلول حاوی تاریخ مورد نظر را تغییر دهید.
برای یادگیری این روش، مثال زیر را در نظر بگیرید.

میخواهیم تاریخ میلادی نوشته شده در سلول B3 را به صورت تاریخ خورشیدی در سلول C3 نشان دهیم. به این منظور، ابتدا بر روی خانه C3 کلیک میکنیم. در ادامه، از زبانه Home به پنل Number میرویم. سپس، بر روی علامت کوچک Number Format در قسمت پایین-راست پنل کلیک میکنیم.

پس از به نمایش درآمدن پنجره Format Cells، مراحل زیر را انجام میهیم:
- در زبانه Number، به بخش «Date» میرویم.
- منوی بازشونده «Locale» را بر روی گزینه «Persian» قرار میدهیم.
- منوی بازشونده «Calendar Type» را بر روی گزینه «Persian» تنظیم میکنیم.
- بر روی OK کلیک میکنیم.
به این ترتیب، قالب نمایش خانه C3، به قالب نمایش تاریخ خورشیدی تبدیل میشود. اکنون، اگر خانه C3 را برابر با خانه B3 قرار دهیم، معادل خورشیدی تاریخ میلادی نوشته در آن را مشاهده خواهیم کرد.
