
تاریخ و زمان از اجزای اصلی و مهم و بعضا جدایی ناپذیر در گزارش ها و تحلیل ها بشمار می روند. از طرفی اکسل یکی از ابزارهای قوی در زمینه گزارشگیری به حساب می آید. پس محاسبات مربوط به تاریخ و زمان در این نرم افزار از اهمیت زیادی برخوردار است. به همین دلیل است که یک دسته از توابع اکسل به این موضوع یعنی Date & Time اختصاص داده شده است. اما موضوع مهمی که اکثر کاربران ایرانی با آن مواجه هستند نحوه انجام محاسبات تاریخ شمسی در اکسل و تبدیل تاریخ میلادی به شمسی و شمسی به میلادی است. برای تبدیل تاریخ در اکسل، از فایلی که در انتهای پست قرار داده شده استفاده کنید. در این فایل فرمولی قرار داده شده است که هم تاریخ میلادی به شمسی و هم تاریخ شمسی به میلادی قابل تبدیل هست. فقط کافیست فرمول رو در سلول مورد نظر کپی کنید و مرجع فرمول رو تغییر بدید.
برای انجام محاسبات بر روی تاریخ شمسی در اکسل چندین روش ارائه میکنم:
روش اول: برنامه نویسی VBA یا Add_Ins توابع شمسی
یکی از روش های کار با تاریخ های شمسی استفاده از زبان برنامه نویسی VBA است. می توان با استفاده از کدهای VBA، توابعی مشابه توابع موجود در اکسل تعریف کرد که بتواند همه محاسبات مشابه برای تاریخ های میلادی را روی تاریخ های شمسی اعمال کند. اگر زمان یا دانش کدنویسی ویژوال بیسیک نداشته باشیم، باید از افزونه های (Add_Ins) آماده که در این خصوص نوشته شده است استفاده کرد. با نصب این افزونه ها، یک سری توابع به توابع اکسل اضافه می شن که عموما در دسته بندی User Defined قرار می گیرند. این افزونه ها به همراه خود یک فایل راهنما دارند که توابع موجود در این افزونه ها را معرفی می کنند و نحوه عملکرد آنها را توضیح می دهند. با جستجو در این اینترنت، می تونید این افزونه ها را تهیه کنید.
جابجا کردن فایل های حاوی Add Ins باعث میشه که فایل عملکرد درستی نداشته باشه برای اینکه فایل در صورت انتقال هم با مشکلی در اجرا مواجه نشوند، مطابق مثال زیر (با استفاده از Drag & Drop) کدهای موجود در افزونه را به فایل اصلی انتقال دهید.

انتقال کدهای VBA به فایل برای تبدیل تاریخ میلادی به شمسی
روش دوم: نوشتن تاریخ بصورت عدد (بدون /)
در این روش با استفاده چند ستون کمکی و فرمول نویسی می تونیم محاسبات متنوعی رو روی تاریخ های شمسی انجام بدیم.
وجود / بین اعداد باعث میشه این اعداد به متن تبدیل شوند و خاصیت محاسبه و مقایسه را از دست بدهند. برای اینکه بتونیم براحتی محاسبه و مقایسه روی تاریخ های شمسی انجام بدیم، تاریخ رو بدون / و بصورت عدد ثبت میکنیم که این ویژگی (عدد بودن) حفظ شود. به عنوان مثال برای تاریخ ۱۳۹۷۱۲۰۴
با این کار محاسبات براحتی قابل انجام هستند اما ظاهر آن مثل کد هست و اصلا نشانگر تاریخ نیست. برای اینکه نمایش رو هم بصورت تاریخ در بیاریم باید از طریق فرمت سل تنظیم زیر رو انجام بدیم.
پس روی سل کلیک راست کرده و Format Cell رو انتخاب می کنیم. روی Custom کلیک میکنیم و مطابق شکل ۲ کد (۰۰۰۰”/”۰۰”/”۰۰) رو تایپ میکنیم و Ok می زنیم

شکل ۱- تاریخ شمسی در اکسل – تنظیم نمایش عدد به صورت تاریخ
بعد از زدن Ok، سلول مورد نظر رو بصورت ۱۳۹۷/۱۲/۰۴ می بینیم.
دقت داشته باشید که فرمت سل فقط نمایش سل را تغییر می دهد و محتوای سل همچنان همان عدد (با قابلیت مقایسه و محاسبه) است.
تشریح روش محاسبه
چون تاریخ ها بصورت عدد نوشته شده اند، به راحتی قابل مقایسه و محاسبه هستند. نحوه استفاده از این روش رو با یک مثال شرح میدم. مطابق شکل ۳ در یک شیت تاریخ های یکسال و وضعیت تعطیل یا کاری بودن و همچنین روزهای هفته رو را تایپ می کنیم.

شکل ۲- تاریخ شمسی در اکسل – شیت تنظیمات
حالا با استفاده از تابع Countifs محاسبات مربوط به این روش رو شرح میدیم:
سوال: فرض کنید میخواهیم ببینیم فاصله بین دو تاریخ ۹۶/۰۲/۰۴ و ۹۶/۱۰/۰۱ چند روز است؟
پاسخ: برای این کار، کافیست ببینیم بین این دو عدد در شیت Setting، چند عدد وجود دارد. پس از تابع Countifs استفاده میکنیم:
=Countifs(A1:A365,”<=961001″,A1:A365,”>=960204″)
در این تابع اعدادی که بزرگتر مساوی از ۹۶۰۲۰۴ و کوچکتر مساوی از ۹۶۱۰۰۱ هستند، شمرده می شوند.
سوال: همون سوال بالا رو با یک شرط بیشتر میخواهیم حل کنیم. مثلا می خواهیم تعداد جمعه های بین این دو تاریخ رو محاسبه کنیم:
پاسخ: کافیست یک شرط دیگر، جمعه بودن رو به تابع بالا اضافه کنیم:
=COUNTIFS(A1:A365,”<=۹۶۱۰۰۱″,A1:A365,”>=۹۶۰۲۰۴″,B1:B365,””جمعه)
این تابع اعدادی که بزرگتر مساوی از ۹۶۰۲۰۴ و کوچکتر مساوی از ۹۶۱۰۰۱ هستند به شرط اینکه سلول مجاور آنها در ستون B معادل کلمه جمعه باشد را شمارش می کند.
همینطور می تونید روزهای کاری و تعطیلات رسمی رو هم در محاسبات خودتون دخیل کنید.
حسن استفاده از این روش، انعطاف پذیری بسیار بالاست، چرا که اگر تقویم خاص با ویژگی های منحصر بفرد (مثلا روزهای خاص محل کار، روزهای تولد و …) داشته باشید، با این روش می تونید محاسبات دلخواه رو اعمال کنید.

افزونه تقویم شمسی در اکسل
افزونه بسیار کاربردی و هوشمند جهت درج و تبدیل تقویم شمسی
روش سوم: استفاده از توابع Date & Time و تبدیل جواب نهایی به تاریخ شمسی در اکسل
روش دیگر در کار کردن با تاریخ های شمسی استفاده از تاریخ های میلادی و همه توابع موجود در دسته توابع Date & Time و در نهایت تبدیل نتیجه به تاریخ شمسی است.
برای تبدیل تاریخ میلادی به شمسی (بدون VBA) باید از ترکیب توابع مختلفی از جمله توابع متنی، منطقی، ریاضی و … استفاده کرد. برای مشاهده نمونه ای از ترکیب این توابع در تبدیل تاریخ میلادی به شمسی، می تونید از فایلی (تبدیل تاریخ میلادی به شمسی و برعکس) که در انتهای آموزش قرار داده شده استفاده کنید.
این روش هم مانند سایر روش ها نقاط ضعف و قوتی داره. مثلا برای محاسبه روزهای تعطیل و کاری و … از این روش نمیشه استفاده کرد چرا که روزهای تعطیل تاریخ میلادی با شمسی متفاوت است. از این روش برای مقایسه تاریخ ها و محاسبه فاصله بین دو تاریخ و … میشه استفاده کرد.
استفاده ترکیبی از این روش ها می تونه کارایی زیادی داشته باشه. خوبه که به همه این روش ها و نقاط ضعف و قوت هر کدام تسلط داشته باشیم و با توجه به نیاز خودمون، از هر کدام در جای مناسب استفاده کنیم.
روش چهارم: استفاده از فرمت نمایش تاریخ شمسی در اکسل ۲۰۱۶
این گزینه که در نسخه اکسل ۲۰۱۶ اضافه شده به شما امکان تغییر ظاهر تاریخ های میلادی به شمسی را داره. توجه کنید ظاهر آن را تغییر میده یعنی در اصل تاریخ میلادی هست و توابع و محاسبات انجام شده روی این تاریخ بر اساس تاریخ میلادی انجام میشود. همانطور که در شکل ۳ میبینید تاریخ میلادی در سلول وارد شده و با تغییر فرمت تاریخ در فرمت سل به Persian، امکان نمایش تاریخ میلادی به صورت شمسی ایجاد شده.

شکل ۳- با استفاده از Format Cell در اکسل ۲۰۱۶
هنوز جا داره که مایکروسافت در این زمینه امکانات بیشتری برای این گزینه درنظر بگیره. در واقع تبدیل تاریخ میلادی به شمسی با این روش در ظاهر انجام میشه و عملا ماهیت اصلی تاریخ تغییر نمیکنه.
ویدئوی آموزشی کار با تاریخ شمسی در اکسل




سلام. نیاز داشتم که تو اکسل تایم لاین روی تاریخ های شمسی داشته باشم ولی به هر فورمتی که میرم درست در نمیاد
درود بر شما
امکانش نیست
با سلام چگونه یک تاریخ شمسی رو در یک سلول با فرمولی چند روز اضافه کرد …یعنی سلولی با مثلا یک هفته اضافه تر داشت با فرمت شمسی.
تشکر
درود بر شما
در این آموزش تشریح شده بستگی داره که کدوم روش رو انتخاب کنید برای ثبت تاریخ شمسی. هر کدوم، منطق و روش جداگانه ای خواهد داشت
ببخشید، یک سوال داشتم. چه طور می توان بر روی تاریخ شمسی که با تبدیل تاریخ میلادی به دست آمده، از فرمول هایی مانند Right و left استفاده کرد.
مثلا فرض کنید من ۲/۲۰/۲۰۱۹ را به یکی از روش های تبدیل تاریخ میلادی به شمسی موجود، به ۰۱/۱۲/۱۳۹۷ تبدیل کرده ام. حالا می خواهم با فرمول های Right یا left بخش هایی ۱۳۹۷، ۱۲ و ۰۱ را جدا کنم، اما هر کاری می کنم این کار امکان پذیر نیست.
درود بر شما
بستگی به خروجی فرمولتون داره. عدده فقط، یا / داره ….
این مقاله رو مطالعه کنید:
https://excelpedia.net/excel-left-and-right-functions/
منظورتان از خروجی فرمول را متوجه نمی شوم. اگر خودم تاریخ را به صورت دستی وارد کنم. تابع right و left جواب می دهند و می توانند سال و ماه را جدا کنند. اما به نظر می رسد تاریخ شمسی ای که با تبدیل تاریخ میلادی به دست آمده یک ویژگی خاص دارد که نمی توان بر روی آن این توابع را اعمال نمود. مثلا وقتی من از فرمول (RIGHT(J2,3 برای خانه J2 استفاده کنم که در آن عبارت ۱۳۹۷/۱۲/۰۱ قرار دارد که با تبدیل تاریخ میلادی به شمسی به دست آمده است، خروجی اکسل ۴۳۵۱۶ است. این در حالی است که من خودم تاریخ مورد اشاره را به صورت دستی وارد کنم، خروجی ۱۲/۰۱، یعنی همان چیزی که من می خواهم می شود.
درود بر شما
وقتی دستی وارد میکنید، تکست هست. وقتی به میلادی تبدیل شده، یعنی عدد شده. پس مقاله زیر رو بخونید. تا بهتر متوجه بشید:
https://excelpedia.net/excel-date-function/
چطوری با ورود تاریخ در اکسل ۲۰۱۶ روز واقع شدن در هفته رو برگردونیم مثلآ تاریخ ۱۳۹۷/۱۱/۲۷ چند شنبه میشه ؟
درود بر شما
چون روزهای هفته برای میلادی و شمسی فرقی نداره، پیشنهاد بنده این هست که از تاریخ میلادی استفاده کنید و فرمت رو شمسی بذارید ( روش چهارم در این آموزش )
بعد با تابع weekday روز هفته را استخراج کنید. تابع زیر رو در اکسل وارد کنید شماره روز هفته در ایران (شروع از شنبه) رو بهتون میده.
بعد با ترکیب تابع Choose خروجی مد نظر رو بدست بیارید
توضیحات تابع Choose:
https://excelpedia.net/choose-funcion/
سلام
ببخشید میخوام یه فرمول در اگسل پیاده کنم بدین صورت:
تاریخ تولید مثلا ۱۳۹۷/۰۱/۰۱
تاریخ انقضا ۱۳۹۸/۰۱/۰۱
حالا یه سلول مثلا یه ماه قبل پیغام نشون رو بده که باید جهت تمدید اقدام بشه یا رنگش قرمز بشه
چه فرمولی باید بکار بره؟
پیشاپیش ممنون
درود بر شما
مقاله زیر رو مطالعه کنید:
https://excelpedia.net/excel-alarm/
عالی عالی عالی
من میخوام برای ستون سررسید شده توسط تاریخ های نوشته شده آلارم تهیه کنم پیلیز راهنمایی کنید ممنون
سلام
مطلب ایجاد آلارم در اکسل رو بخونید.
در جدولی که حاوی چند ستون هست، منجمله تاریخ و نام افراد مختلف، میخوام تو این جدول، که از مثلا ۱۰۰۰ ردیف تشکیل شده، هر کدوم که در یک تاریخ، نام فرد، تکرار شده برام عدد تکرار جدید رو بندازه (نه مجموع کل تکرارها) مثلا اولین باری که تکرار شده عدد یک، برای دومین بار عدد دو، برای سومین بار عدد سه و … ممنون میشم اگر کسی کمک کنه
از countifs استفاده کنید. به اولین تکرار یک اسم در یک تاریخ مشخص برسه، میزنه ۱. به دومین تکرار همون اسم در همون تاریخ بزنه میزنه ۲ و ….
اگر با این تابع آشنا نیستید این مقاله رو بخونید
https://excelpedia.net/countifs-function/
سلام
چطوری میتونم در افیس ۲۰۱۳ تاریخ میلادی رو به شمسی تغییر بدم؟
درود بر شما
توی این مقاله همین موضوع توضیح داده شده!
کافیه مقاله رو مطالعه بفرمایید
با سلام
آیا فرمولی هست که بزرگترین تاریخ شمسی از بین چند تاریخ را نشان بدهد؟
سلام
با فرمول آرایه ای میتونید این کار رو انجام بدید.
اول کافیه با تابع Substitute کارکترهای / رو پاک کنید و نهایتا روی خروجی این تابع یک MAX بگیرید.
در آخر اگر میخواید که خروجی درستی داشته باشید دوباره کارکترهای / رو بهش اضافه کنید.
سلام
من برای تبدیل تاریخ از تابع J_GregorianDate در افزونه Persian Function For EXCEL_V2_1 استفاده می کنم اما برای بعضی تاریخها درست عمل نمیکنه مثلا برای ۱۳۸۷/۰۲/۰۲ به ۲۰۲۱/۰۸/۰۴ تبدیل میکنه آیا باید تغییر خاصی در فرمت فارسی بدهم؟قبلا این مشکل را نداشتم.
سلام چرا زمانی که از تابع today استفاده میکنم برای مقایسه در شرطها عدد تاریخ عوض میشه و یک عدد چند رقمی میشه ?یعنی تاریخ بر نمیگردونه یه عدد نامشخصه چند رقمی به هم پیوسته نشون میده
درود بر شما
برای اینکه بدونید مفهوم اون عدد چیه پست زیر رو مطالعه کنید
https://excelpedia.net/excel-date-function/