سبد خرید
0

محصولی در سبد خرید نیست.

بازگشت به فروشگاه

تاریخ شمسی در اکسل | یکبار برای همیشه

تبدیل تاریخ شمسی به میلادی
۴.۸/۵ - (۶۵ امتیاز)

تاریخ و زمان از اجزای اصلی و مهم و بعضا جدایی ناپذیر در گزارش ها و تحلیل ها بشمار می روند. از طرفی اکسل یکی از ابزارهای قوی در زمینه گزارشگیری به حساب می آید. پس محاسبات مربوط به تاریخ و زمان در این نرم افزار از اهمیت زیادی برخوردار است. به همین دلیل است که یک دسته از توابع اکسل به این موضوع یعنی Date & Time اختصاص داده شده است. اما موضوع مهمی که اکثر کاربران ایرانی با آن مواجه هستند نحوه انجام محاسبات تاریخ شمسی در اکسل و تبدیل تاریخ میلادی به شمسی و شمسی به میلادی است. برای تبدیل تاریخ در اکسل، از فایلی که در انتهای پست قرار داده شده استفاده کنید. در این فایل فرمولی قرار داده شده است که هم تاریخ میلادی به شمسی و هم تاریخ شمسی به میلادی قابل تبدیل هست. فقط کافیست فرمول رو در سلول مورد نظر کپی کنید و مرجع فرمول رو تغییر بدید.

برای انجام محاسبات بر روی تاریخ شمسی در اکسل چندین روش ارائه میکنم:

روش اول: برنامه نویسی VBA یا Add_Ins توابع شمسی

یکی از روش های کار با تاریخ های شمسی استفاده از زبان برنامه نویسی VBA است. می توان با استفاده از کدهای VBA، توابعی مشابه توابع موجود در اکسل تعریف کرد که بتواند همه محاسبات مشابه برای تاریخ های میلادی را روی تاریخ های شمسی اعمال کند. اگر زمان یا دانش کدنویسی ویژوال بیسیک نداشته باشیم، باید از افزونه های (Add_Ins) آماده که در این خصوص نوشته شده است استفاده کرد. با نصب این افزونه ها، یک سری توابع به توابع اکسل اضافه می شن که عموما در دسته بندی User Defined قرار می گیرند. این افزونه ها به همراه خود یک فایل راهنما دارند که توابع موجود در این افزونه ها را معرفی می کنند و نحوه عملکرد آنها را توضیح می دهند. با جستجو در این اینترنت، می تونید این افزونه ها را تهیه کنید.

نکته:
جابجا کردن فایل های حاوی Add Ins باعث میشه که فایل عملکرد درستی نداشته باشه برای اینکه فایل در صورت انتقال هم با مشکلی در اجرا مواجه نشوند، مطابق مثال زیر (با استفاده از Drag & Drop) کدهای موجود در افزونه را به فایل اصلی انتقال دهید.

 

انتقال کدهای VBA

انتقال کدهای VBA به فایل برای تبدیل تاریخ میلادی به شمسی

روش دوم: نوشتن تاریخ بصورت عدد (بدون /)

در این روش با استفاده چند ستون کمکی و فرمول نویسی می تونیم محاسبات متنوعی رو روی تاریخ های شمسی انجام بدیم.

وجود / بین اعداد باعث میشه این اعداد به متن تبدیل شوند و خاصیت محاسبه و مقایسه را از دست بدهند. برای اینکه بتونیم براحتی محاسبه و مقایسه روی تاریخ های شمسی انجام بدیم،  تاریخ رو بدون /  و بصورت عدد ثبت میکنیم که این ویژگی (عدد بودن) حفظ شود. به عنوان مثال برای تاریخ ۱۳۹۷۱۲۰۴

با این کار محاسبات براحتی قابل انجام هستند اما ظاهر آن مثل کد هست و اصلا نشانگر تاریخ نیست. برای اینکه نمایش رو هم بصورت تاریخ در بیاریم باید از طریق فرمت سل تنظیم زیر رو انجام بدیم.

پس روی سل کلیک راست کرده و Format Cell رو انتخاب می کنیم. روی Custom کلیک میکنیم و مطابق شکل ۲ کد (۰۰۰۰”/”۰۰”/”۰۰) رو تایپ میکنیم و Ok می زنیم

تنظیم نمایش عدد به صورت تاریخ

شکل ۱- تاریخ شمسی در اکسل – تنظیم نمایش عدد به صورت تاریخ

بعد از زدن Ok، سلول مورد نظر رو بصورت ۱۳۹۷/۱۲/۰۴ می بینیم.

دقت داشته باشید که فرمت سل فقط نمایش سل را تغییر می دهد و محتوای سل همچنان همان عدد (با قابلیت مقایسه و محاسبه) است.

تشریح روش محاسبه

چون تاریخ ها بصورت عدد نوشته شده اند، به راحتی قابل مقایسه و محاسبه هستند. نحوه استفاده از این روش رو با یک مثال شرح میدم. مطابق شکل ۳ در یک شیت تاریخ های یکسال و وضعیت تعطیل یا کاری بودن و همچنین روزهای هفته رو را تایپ می کنیم.

شیت تنظیمات

شکل ۲- تاریخ شمسی در اکسل – شیت تنظیمات

حالا با استفاده از تابع Countifs محاسبات مربوط به این روش رو شرح میدیم:

سوال: فرض کنید میخواهیم ببینیم فاصله بین دو تاریخ ۹۶/۰۲/۰۴ و ۹۶/۱۰/۰۱ چند روز است؟

پاسخ: برای این کار، کافیست ببینیم بین این دو عدد در شیت Setting، چند عدد وجود دارد. پس از تابع Countifs استفاده میکنیم:

=Countifs(A1:A365,”<=961001″,A1:A365,”>=960204″)

در این تابع اعدادی که بزرگتر مساوی از ۹۶۰۲۰۴ و کوچکتر مساوی از ۹۶۱۰۰۱ هستند، شمرده می شوند.

سوال: همون سوال بالا رو با یک شرط بیشتر میخواهیم حل کنیم. مثلا می خواهیم تعداد جمعه های بین این دو تاریخ رو محاسبه کنیم:

پاسخ: کافیست یک شرط دیگر، جمعه بودن رو به تابع بالا اضافه کنیم:

=COUNTIFS(A1:A365,”<=۹۶۱۰۰۱″,A1:A365,”>=۹۶۰۲۰۴″,B1:B365,””جمعه)

این تابع اعدادی که بزرگتر مساوی از ۹۶۰۲۰۴ و کوچکتر مساوی از ۹۶۱۰۰۱ هستند به شرط اینکه سلول مجاور آنها در ستون B معادل کلمه جمعه باشد را شمارش می کند.

همینطور می تونید روزهای کاری و تعطیلات رسمی رو هم در محاسبات خودتون دخیل کنید.

حسن استفاده از این روش، انعطاف پذیری بسیار بالاست، چرا که اگر تقویم خاص با ویژگی های منحصر بفرد (مثلا روزهای خاص محل کار، روزهای تولد و …) داشته باشید، با این روش می تونید محاسبات دلخواه رو اعمال کنید.

Persian-Calendar-Icon

افزونه تقویم شمسی در اکسل
افزونه بسیار کاربردی و هوشمند جهت درج و تبدیل تقویم شمسی

مشاهده افزونه تقویم شمسی در اکسل

روش سوم: استفاده از توابع Date & Time و تبدیل جواب نهایی به تاریخ شمسی در اکسل

روش دیگر در کار کردن با تاریخ های شمسی استفاده از تاریخ های میلادی و همه توابع موجود در دسته توابع  Date & Time و در نهایت تبدیل نتیجه به تاریخ شمسی است.

برای تبدیل تاریخ میلادی به شمسی (بدون VBA) باید از ترکیب توابع مختلفی از جمله توابع متنی، منطقی، ریاضی و … استفاده کرد. برای مشاهده نمونه ای از ترکیب این توابع در تبدیل تاریخ میلادی به شمسی، می تونید از فایلی (تبدیل تاریخ میلادی به شمسی و برعکس) که در انتهای آموزش قرار داده شده استفاده کنید.

این روش هم مانند سایر روش ها نقاط ضعف و قوتی داره. مثلا برای محاسبه روزهای تعطیل و کاری و … از این روش نمیشه استفاده کرد چرا که روزهای تعطیل تاریخ میلادی با شمسی متفاوت است. از این روش برای مقایسه تاریخ ها و محاسبه فاصله بین دو تاریخ و … میشه استفاده کرد.

نکته:
استفاده ترکیبی از این روش ها می تونه کارایی زیادی داشته باشه. خوبه که به همه این روش ها و نقاط ضعف و قوت هر کدام تسلط داشته باشیم و با توجه به نیاز خودمون، از هر کدام در جای مناسب استفاده کنیم.

 

روش چهارم: استفاده از فرمت نمایش تاریخ شمسی در اکسل ۲۰۱۶

این گزینه که در نسخه اکسل ۲۰۱۶ اضافه شده به شما امکان تغییر ظاهر تاریخ های میلادی به شمسی را داره. توجه کنید ظاهر آن را تغییر میده یعنی در اصل تاریخ میلادی هست و توابع و محاسبات انجام شده روی این تاریخ بر اساس تاریخ میلادی انجام میشود. همانطور که در شکل ۳ میبینید تاریخ میلادی در سلول وارد شده و با تغییر فرمت تاریخ در فرمت سل به Persian، امکان نمایش تاریخ میلادی به صورت شمسی ایجاد شده.

تاریخ شمسی در اکسل - با استفاده از Format Cell در اکسل 2016

شکل ۳- با استفاده از Format Cell در اکسل ۲۰۱۶

هنوز جا داره که مایکروسافت در این زمینه امکانات بیشتری برای این گزینه درنظر بگیره. در واقع تبدیل تاریخ میلادی به شمسی با این روش در ظاهر انجام میشه و عملا ماهیت اصلی تاریخ تغییر نمیکنه.

ویدئوی آموزشی کار با تاریخ شمسی در اکسل

 

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

کلیدواژه : متوسط
134

من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • کیا ۲۲ مهر ۱۳۹۷ / ۲:۱۱ ب٫ظ

    سلام و با تشکر از خانم خاکزاد و آقای چراغی به شخصه خیلی چیزها از شما بزرگواران یاد گرفتم.همیشه سلامت باشید.
    من احتیاج داشتم به اینکه تاریخ تولد دانش آموزان چند پایه بررسی بشه بعد کسانی که امروز تولدشون هست اعلام کنه. با استفاده از فرمول تبدیل تاریخ شما به میلادی و یک فرمول دیگه این قضیه درست شد اما تو بعضی از سالها مشکل وجود داره مثلا ۱۳۹۱/۰۷/۲۲ (یا همین تاریخ در سال ۱۳۹۵ )در تبدیل به میلادی تاریخ درستی به دست نمیاد.
    حالا دو سئوال داشتم یکی اینکه کدوم قسمت این فرمول باید اصلاحش کنم تا مشکل بالا برطرف بشه چون در خیلی از سالها این مشکل به وجود میاد.دوم اینکه برای نمایش تولد روز جاری از چه روشی استفاده کنم ترجیحا ماکرو نویسی نباشه -با تشکر فراوان

    • آواتار
      حسنا خاکزاد ۲۲ مهر ۱۳۹۷ / ۳:۲۷ ب٫ظ

      درود بر شما
      من تاریخ هایی که فرمودید رو چک کردم. هر دو درسته!
      تایخ ۲۲ مهر ۹۷ برابر است با ۲۰۱۲-۱۰-۱۳ یعنی سیزده اکتبر ۲۰۱۲

      • کیا ۲۳ مهر ۱۳۹۷ / ۸:۳۵ ق٫ظ

        سلام
        با تشکر از وقتی که گذاشتید .من تو فایل دانلودی از سایت شما این کارو بسط دادم اگر براتون مقدور هست یه نگاه بندازید تا متوجه منظورم بشید شاید هم من اشتباه می کنم اون زمانهایی که اشتباه با رنگ قرمز مشخص کردم.
        نمیدونستم چطوری تو سایتتون آپلود کنم اینجا آپلودش کردم
        http://s9.picofile.com/file/8339945992/Shamsi_Date_Exchange33333.xlsx.html
        با تشکر فراوان

        • آواتار
          حسنا خاکزاد ۲ دی ۱۳۹۷ / ۱۱:۲۴ ق٫ظ

          درود بر شما
          فایل Exchange Date رو چک کنید. اون درست عمل میکنه. Exchange Date 2 ظاهرا سال کبیسه درش دیده نشده. که اونم با پیدا کردن منطقش میشه فرمول رو تغییر داد

  • پروانه ۱۸ مهر ۱۳۹۷ / ۱۱:۳۴ ق٫ظ

    با سلام و خسته نباشید
    ضمن تشکر از سایتت بسیار بسیار خوبتون میخواستم بپرسم این فایلی که لینک دانلودشو گذاشتید را دانلوود کردم .حالا باید چیکار کنم که بتونم دو تاریخ شمسی را از هم کنم و اختلاف را به روز به من نشان بدهد؟

  • پروانه ۱۸ مهر ۱۳۹۷ / ۱۰:۳۱ ق٫ظ

    با سلام و خسته نباشید
    من در دو سلول اکسل کنار هم دو تاریخ با اختلاف مثلا ۲۰ روز رو تایپ کردم و در سلول کنارش میخوام اختلاف روز بین دو تاریخ را حساب کنم.
    روشی که شما گفتید را خواندم و از روی custom فرمت سلول هایی که تاریخ داشت را به همان شکلی که فرموده بودید درست کردم.ولی وقتی از اون فرمولی که شما فرمودید استفاده کردن پیغا خطا میده
    ممنون میشم راهنمایی بفرمایید

    • آواتار
      حسنا خاکزاد ۱۸ مهر ۱۳۹۷ / ۱۰:۳۵ ق٫ظ

      درود بر شما
      کدوم ذوش و استفاده کردید؟
      فرمت شمسی یا فرمت ۰۰″/”۰۰″/”۰۰

    • پرووانه ۱۸ مهر ۱۳۹۷ / ۱۰:۵۵ ق٫ظ

      مثلا تاریخ ۱۳۹۶۱۲۰۳ را به فارسی و بدون علامت / وارد کردم و ۰۰۰۰”/”۰۰”/۰۰” را از روی custom انتخاب کردم

      • آواتار
        حسنا خاکزاد ۱۸ مهر ۱۳۹۷ / ۱۲:۳۱ ب٫ظ

        اگر این روش رو استفاده کردید
        همونطور که در شکل ۲ نمای شداده شده
        باید تقویم رو اول بسازید، بعد محاسبات رو ب راساس اون انجام بدید

  • وفا ۳۱ شهریور ۱۳۹۷ / ۱۲:۲۵ ب٫ظ

    سلام خسته نباشید
    میخوام بدونم چطور میشه در یک سلول تاریخم یه عدد جمع کنم.فرض کنید تاریخ ۱۳۹۷/۱۰/۱۰ رو با ۲۰ روز جمع کنم و حاصل بشه ۱۳۹۷/۱۰/۳۰.لطفا راهنمایی کنید. با تاریخ میلادی مشکل نداره فقط با تاریخ شمسی مشکل داره

    • آواتار
      حسنا خاکزاد ۳۱ شهریور ۱۳۹۷ / ۱۲:۵۵ ب٫ظ

      درود بر شما
      بله همونطور که توضیح داده شده تاریخ شمسی فرق داره با میلادی
      یا باید از فرمت شمسی، استفاده کنید (که نیازمند ویندوز ۱۰ و آفیس ۲۰۱۶ هست)
      یا از همون روش های بالا، اد اینز یا تبدیل میلادی به شمسی

  • عبدالحسین ۱۶ مرداد ۱۳۹۷ / ۹:۱۶ ب٫ظ

    سلام خسته نباشید
    یک سوال
    میخوام در اکسل در یک سلول تقویم ایجاد کنم مثل صفحات خرید بلیط ها که با کیلک روی آن یک پنجره کوچک باز می شود وتقویم می آید وانتخاب میکنیم
    لطفا راهنمایی کنید واگرامکان دارد فرمول آن را بریم بفرستید
    باتشک

    • آواتار
      حسنا خاکزاد ۱۷ مرداد ۱۳۹۷ / ۱۲:۵۸ ب٫ظ

      درود بر شما
      شما باید افزونه مربوطه رو نصب کنید. فرمول خاصی نیست. date picker هست چیزی که منظور شماست. جستجو کنید ببینید فارسیش رو پیدا میکنید یا نه.

  • 1391MAHAN ۳۱ تیر ۱۳۹۷ / ۱:۳۸ ب٫ظ

    باسلام
    ممنون از توضیحاتتون میشه لطف کنید برام توضیح بدیدچگونه روز وماه رابهش بدیم هفته رابهمون بده به شمسی

    • آواتار
      حسنا خاکزاد ۱ مرداد ۱۳۹۷ / ۱۰:۴۰ ق٫ظ

      درود بر شما
      اینکه روز و ماه رو بدیم و هفته بده. منظورتون یکی از ۵۲ هفته سال هست یا یک تا چهار هفته هر ماه؟
      مورد بعد اینکه برای تاریخ شمسی همونطور که توضیح داده شده یا باید از اد اینز استفاده کنید (نمیدونم اینی که میخواید رو داره یا نه)
      یا اینکه منطق میلادی رو درک کنید و با ایجاد روابط به شمسی تبدیل کنید:
      برای درک منطق تاریخ در اکسل این پست رو مطالعه کنید:

      https://excelpedia.net/excel-date-function/

  • مجید ۲۷ تیر ۱۳۹۷ / ۱:۰۳ ب٫ظ

    سلام
    ممنون به خاطر پست کامل تون
    ولی چطور میشه اسلایسر تایم لاین فارسی درست کرد؟!
    شما راهی می تونید پیشنهاد کنید؟

    • سامان چراغی ۲۷ تیر ۱۳۹۷ / ۳:۵۱ ب٫ظ

      سلام
      متأسفانه هنوز امکان استفاده از تاریخ شمسی در Time Line وجود نداره و فقط باید از تاریخ میلادی برای این کار استفاده کنید.

  • مجتبی ۳۱ خرداد ۱۳۹۷ / ۴:۱۰ ب٫ظ

    سلام
    یه سوالی داشتم
    من نزدیک به سه هزار تا ردیف دارم و میخوام به مرور و طی چند روز در یک ردیف ( یعنی در یک سلول ) عددی رو بنویسم
    میخوام وقتی روی یک سلول داده ای رو مینویسم زمان و تاریخ دقیق بصورت مجزا نوشته بشه
    مثلا ممکنه در سلول D2753 امروز داده ای رو بنویسم و یک هفته بعد روی سلول D2759 داده ی دیگه ای بنویسم که زمان و تاریخش مطابق با زمانی باشه که داده رو وارد کردم
    ممنون میشم

    • آواتار
      حسنا خاکزاد ۲ تیر ۱۳۹۷ / ۹:۴۹ ق٫ظ

      درود بر شما
      بهترین کار اینه که از VBA استفاده کنید
      اما حالت خود اکسلش با استفاده از خطای circular هست. اول از مسیر maximum iterations رو روی ۱ بذارید:
      Excel Options/ formulas/ calculation options/ enable iterative calculation
      بعد هم فرمول زیر رو بنویسید:

      =if(A2<>"",if(B2="",now(),b2,"")
      

      نکته:
      سلول A2 سلولی هستکه داده ای ثبت میشه. سلول B2 هم زمان ثبت میشه

      • مجتبی ۳ تیر ۱۳۹۷ / ۱۰:۳۶ ق٫ظ

        درود بر شما
        جسارتا امکان داره ابتدائی لطف کنید و توضیح بدین
        چون زیاد سر در نمیارم
        ممنونم

        • آواتار
          حسنا خاکزاد ۳ تیر ۱۳۹۷ / ۱۲:۲۸ ب٫ظ

          درود
          توضیح خاصی نداره. فرمول که نوشته شده کافیه کپی کنید توی سلول مورد نظر
          اون مسیری هم که نوشته شده رو باز کنید و تیک گزینه مورد نظر رو بزنید

          • مجتبی ۹ تیر ۱۳۹۷ / ۱۲:۵۲ ب٫ظ

            درود و تشکر از شما
            هرکاری کردم نشد ولی بهرحال سپاس از لطفتان

  • امین ۳۰ خرداد ۱۳۹۷ / ۲:۲۳ ب٫ظ

    در نسخه ۲۰۱۶ تاریخ شمسی داره اما جهت انگلیسی هست. سال سمت راست هست و روز سمت چپ

    • سامان چراغی ۳۰ خرداد ۱۳۹۷ / ۲:۵۴ ب٫ظ

      زمانیکه فرمت تاریخ رو از قسمت Date مربوط به Format Cell شمسی انتخاب کردید قسمت Custom رو انتخاب کنید و جای درست رو برای yyyy و mm و dd تعیین کنید. به عنوان مثال از فرمت زیر استفاده کنید:

      [$-fa-IR,16]yyyy/mm/dd;@
      
  • امیرعلی ۱۳ خرداد ۱۳۹۷ / ۱۲:۳۹ ب٫ظ

    سلام من میخوام فاصله دوتا تاریخ شمسی رو از هم کم کنم میشه بهم توضیح بدین چیکار کنم ساده بگین این روش رو رفتم نشد؟ مثلا ۱۳۹۲۰۱۰۶ رو از ۱۳۹۷۰۴۰۱ کسر کنم بهم سابقه کار یه فرد رو بگه؟

    • آواتار
      حسنا خاکزاد ۱۳ خرداد ۱۳۹۷ / ۱:۲۷ ب٫ظ

      درود بر شما
      یا از تاریخ میلادی باید استفاده کنید که ظاهر شمسی داشته باشه. (که در افیس ۲۰۱۶ و ویندوز ۱۰ در دسترس هست)
      یا اداینز رو نصب کنید

      یا همین روشی که رفتید. البته این روشی که استفاده میکنید باید یک بار فاصله این دو تاریخ رو نوشته باشید تا بتونید Countifکنید

      ویدئو رو هم مشاهده کنید. شاید بهتر باشه براتون

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان