این آموزش به معرفی یک فایل اکسل با فرمت xlsm
میپردازد که دارای توابع پیشرفتهای برای تبدیل تاریخ شمسی به میلادی و بالعکس، محاسبه اختلاف تاریخها و محاسبه تاریخ بر اساس تعداد روزها است.
معرفی برنامه تبدیل تاریخ شمسی و میلادی و محاسبه اختلاف تاریخها با استفاده از اکسل و VBA
این برنامه توسط ایران ویبیای و با کمک VBA در اکسل طراحی شده و شما را از کدنویسی برای انجام این محاسبات در اکسل بینیاز میکند. در ادامه، توابع موجود در این فایل را بههمراه نحوه استفاده از آنها توضیح میدهیم.
معرفی توابع و کاربرد آنها
این برنامه چهار تابع جدید به اکسل شما اضافه میکند. با استفاده از این چهار تابع میتوانید
- تاریخ میلادی را به شمسی،
- تاریخ شمسی را به میلادی،
- فاصله بین دو تاریخ به روز و
- تبدیل تعداد روزها به سال روز و ماه
را براحتی انجام دهید. توابع این ماکرو اکسل به شرح زیر میباشد:
1. تابع ivMiladiToShamsi
این تابع، تاریخ میلادی را به تاریخ شمسی تبدیل میکند و یک مقدار را بر اساس فرمت تعیینشده برمیگرداند.
آرگومانهای (ورودیهای) تابع
- inputDate: تاریخ میلادی ورودی
- returnValueType: قالب تاریخ شمسی خروجی؛ تابع هفت قالب خروجی دارد که در جدول زیر میتوانید تفاوت هر کدام را مشاهده نمایید.
در جدول زیر میتوانید فرمهای مختلف این تابع را مشاهده نمایید:
تاریخ میلادی | خروجی تابع (تاریخ شمسی) | فرمول |
---|---|---|
2024-10-25 | 04/08/1403 | =ivMiladiToShamsi(A13, 1) |
2020-10-23 | جمعه، 02 آبان ، 1399 | =ivMiladiToShamsi(A14, 2) |
2000-10-28 | 07-آبا-1379 | =ivMiladiToShamsi(A15, 3) |
2012-03-23 | 1391/01/04 | =ivMiladiToShamsi(A16, 4) |
2024-03-23 | 01/04/1403 | =ivMiladiToShamsi(A17, 5) |
2024-03-23 | 04 فروردين 1403 | =ivMiladiToShamsi(A18, 6) |
2024-03-23 | شنبه، فروردين 04، 1403 | =ivMiladiToShamsi(A19, 7) |
توضیح: توجه داشته باشید که برای مشاهده صحیح تاریخ میلادی قالب عددی سلول باید روی Date و تقویم روی Gregorian تنظیم شده باشد.
1. تابع ivShamsiToMiladi
این تابع تاریخ شمسی وارد شده را به میلادی تبدیل میکند.
آرگومانهای (ورودیهای) تابع
- inJalaliDate: تاریخ شمسی/جلالی ورودی؛ یکی از سه فرم 14021201 يا 1402/12/01 يا 01-12-1402
در جدول زیر میتوانید چند کاربرد از این تابع را مشاهده نمایید:
تاریخ شمسی | خروجی تابع (تاریخ میلادی) | فرمول | توضیحات |
---|---|---|---|
13621201 | دوشنبه, 20 فوريه 1984 | =ivShamsiToMiladi(A27) | |
1403-08-01 | سه شنبه, 22 اُكتبر 2024 | =ivShamsiToMiladi(A28) | |
1403/12/29 | چهارشنبه, 19 مارس 2025 | =ivShamsiToMiladi(A29) | |
1403/12/30 | پنجشنبه, 20 مارس 2025 | =ivShamsiToMiladi(A30) | |
1402/12/30 | تاريخ ورودي صحيح نميباشد | =ivShamsiToMiladi(A31) | سال 1402 کبیسه نبوده است. |
1399/07/31 | تاريخ ورودي صحيح نميباشد | =ivShamsiToMiladi(A32) | ماه مهر 31 روزه نمیباشد. |
1399/05/20 | دوشنبه, 10 اوت 2020 | =ivShamsiToMiladi(A33) |
1. تابع ivShamsiDiff
این تابع فاصله بین دو تاریخ شمسی را به روز محاسبه مینماید.
آرگومانهای (ورودیهای) تابع
- firstDate: تاریخ شمسی/جلالی اول؛ یکی از سه فرم 14021201 يا 1402/12/01 يا 01-12-1402
- secoundDate: تاریخ شمسی/جلالی دوم؛ یکی از سه فرم 14021201 يا 1402/12/01 يا 01-12-1402
در جدول زیر میتوانید چند کاربرد از این تابع را مشاهده نمایید:
تاریخ شمسی اول | تاریخ شمسی دوم | خروجی تابع | فرمول |
---|---|---|---|
13621201 | 1403/12/30 | 15004 | =ivShamsiDiff(A42, B42) |
1403-08-01 | 1403-01-31 | -186 | =ivShamsiDiff(A43, B43) |
1403/12/29 | 1403-01-31 | -334 | =ivShamsiDiff(A44, B44) |
1403/12/30 | 1403-01-31 | -335 | =ivShamsiDiff(A45, B45) |
1402/12/30 | 1403-01-31 | مقدار تاريخ شروع اشتباه است | =ivShamsiDiff(A46, B46) |
1399/07/31 | 1403-01-31 | مقدار تاريخ شروع اشتباه است | =ivShamsiDiff(A47, B47) |
1399/05/20 | 1403-01-31 | 1348 | =ivShamsiDiff(A48, B48) |
1. تابع ivDaysFromDate
این تابع تعداد روزهای بعد از یک تاریخ مبنا را به سال، ماه و روز تبدیل مینماید.
آرگومانهای (ورودیهای) تابع
- numOfDays: تعداد روزها بعد از تاریخ مبنا
- baseDate: تاریخ مبنای شمسی/جلالی؛ یکی از سه فرم 14021201 يا 1402/12/01 يا 01-12-1402. مقدار پیشفرض این آرگومان 1300-01-01 خواهد بود.
- printFormat: نحوه پرینت نتایج در سلول را مشخص مینماید. اگر False (مقدار پیشفرض) باشد فقط تعداد سال، روز و ماه در سلول پرینت خواهد شد. اگر True باشد اطلاعات کامل پرینت خواهد شد.
تعداد روزها | تاریخ مبنا | نتیجه تابع | فرمول سلول |
---|---|---|---|
10000 | 13621201 | 10000 روز از تاريخ 13621201 تاريخ 1390/04/17 و برابر با 27 سال و 4 ماه و 15 روز ميباشد. | =ivDaysFromDate(A57,B57,TRUE) |
10000 | 13621201 | 27 سال و 4 ماه و 15 روز | =ivDaysFromDate(A58,B58,FALSE) |
31 | 1403/12/29 | 0 سال و 0 ماه و 31 روز | =ivDaysFromDate(A59,B59,FALSE) |
30 | 1403/12/30 | 0 سال و 0 ماه و 30 روز | =ivDaysFromDate(A60,B60,FALSE) |
31 | 1402/12/29 | 31 روز از تاريخ 1402/12/29 تاريخ 1403/01/31 و برابر با 0 سال و 1 ماه و 1 روز ميباشد. | =ivDaysFromDate(A61,B61,TRUE) |
30 | 1399/07/31 | تاريخ مبنا اشتباه وارد شده است | =ivDaysFromDate(A62,B62,FALSE) |
365 | 1399/05/20 | 0 سال و 11 ماه و 29 روز | =ivDaysFromDate(A63,B63,FALSE) |
کد منبع ماکرو
کد منبع ماکروی اکسل پیوست این برنامه قفل میباشد. در صورتی که در برنامههای VBA خود به کد منبع این ماکرو نیاز دارید میتوانید از فروشگاه ایران ویبیای آن را خریداری نمایید و از ما حمایت نمایید.
دانلود فایل برنامه تبدیل تاریخ شمسی و میلادی ایران VBA
راهنمای استفاده از فایل
فعالسازی ماکروها: حتماً هنگام باز کردن فایل ماکروها را فعال کنید تا توابع به درستی کار کنند.
استفاده از توابع در شیتهای مختلف: توابع بهراحتی در هر شیت اکسل قابل استفاده هستند و نیازی به تنظیمات اضافی ندارند.