چطور در اکسل تاریخ شمسی را به میلادی تبدیل کنیم؟
تبدیل تاریخ میلادی به شمسی
جهت دیدن آموزش جامع اکسل در لایت کالج روی دکمه زیر کلیک کنید.
تبدیل تاریخ شمسی به میلادی
برای تبدیل تاریخ شمسی به میلادی در اکسل، به طور مستقیم تابعی وجود ندارد، اما میتوان از کدهای VBA برای انجام این کار استفاده کرد. در اینجا یک کد VBA برای تبدیل تاریخ شمسی به میلادی آورده شده است:
۱. وارد کردن کد VBA:
- در اکسل، به تب `Developer` بروید (اگر فعال نیست، از تنظیمات اکسل فعالش کنید).
- روی `Visual Basic` کلیک کنید.
- از منوی باز شده، روی `Insert` کلیک کرده و `Module` را انتخاب کنید.
- کد زیر را در ماژول باز شده وارد کنید:
اگر تاریخ شمسی در سه سلول جداگانه باشد (به عنوان مثال، سال، ماه، و روز هرکدام در یک سلول جدا باشند) و بخواهید آن را به میلادی تبدیل کنید، میتوانید ابتدا این سه بخش را با هم ترکیب کرده و سپس با استفاده از کد VBA تاریخ شمسی را به میلادی تبدیل کنید.
مراحل تبدیل تاریخ شمسی (در سه سلول) به میلادی:
فرض کنید:
– **سال** در سلول `A1`
– **ماه** در سلول `B1`
– **روز** در سلول `C1`
۱. استفاده از VBA برای تبدیل تاریخ شمسی به میلادی
1. به تب `Developer` در اکسل بروید و روی `Visual Basic` کلیک کنید.
2. در پنجرهی باز شده، از منوی `Insert`، گزینهی `Module` را انتخاب کنید.
3. کد زیر را در پنجره ماژول کپی کنید:
کد تبدیل تاریخ میلادی به شمسی
“`vba
Function ShamsiToMiladi2(jy As Integer, jm As Integer, jd As Integer) As Date
Dim gy As Integer, gm As Integer, gd As Integer
Dim g_day_no As Long, j_day_no As Long
Dim gy2 As Integer, days As Integer
Dim v As Integer
If jy > 979 Then
gy = jy – 979
Else
gy = jy – 621
End If
j_day_no = 365 * gy + ((gy + 3) \ 4) – ((gy + 99) \ 100) + ((gy + 399) \ 400)
If jm < 7 Then
j_day_no = j_day_no + (jm – 1) * 31
Else
j_day_no = j_day_no + ((jm – 7) * 30) + 186
End If
j_day_no = j_day_no + jd – 1
g_day_no = j_day_no + 79
gy2 = 1600 + 400 * (g_day_no \ 146097)
g_day_no = g_day_no Mod 146097
v = (g_day_no – 1) \ 36524
If v <> 4 Then g_day_no = g_day_no – 36524 * v Else v = 3
gy2 = gy2 + 100 * v
v = (g_day_no – 1) \ 1461
If v <> 4 Then g_day_no = g_day_no – 1461 * v Else v = 3
gy2 = gy2 + 4 * v
v = (g_day_no – 1) \ 365
If v <> 4 Then g_day_no = g_day_no – 365 * v Else v = 3
gy2 = gy2 + v
gm = 0
If g_day_no < 186 Then
gm = 1 + g_day_no \ 31
gd = 1 + g_day_no Mod 31
Else
gm = 7 + (g_day_no – 186) \ 30
gd = 1 + (g_day_no – 186) Mod 30
End If
ShamsiToMiladi2 = DateSerial(gy2, gm, gd)
End Function
“`
۲. استفاده از تابع برای ترکیب تاریخ و تبدیل آن
بعد از اضافه کردن کد بالا، از این تابع استفاده کنید تا تاریخ شمسی (که در سه سلول جداگانه دارید) به میلادی تبدیل شود.
فرض کنید سال، ماه و روز به ترتیب در سلولهای `A1`، `B1` و `C1` قرار دارند:
“`excel
=ShamsiToMiladi2(A1, B1, C1)
“`
این تابع تاریخهای شمسی را که در سه سلول جداگانه هستند به میلادی تبدیل میکند.
نتیجه:
این راهکار به شما اجازه میدهد تا تاریخ شمسی را که در سه سلول (سال، ماه و روز) قرار دارد به میلادی تبدیل کرده و نتیجه را در یک سلول نمایش دهید.
دیدگاهتان را بنویسید