سبد خرید
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 رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • a.z ۱۳ شهریور ۱۴۰۲ / ۳:۴۳ ب٫ظ

    با سلام
    من وقتی از تاریخ ار با استفاده از addin تاریخ را میخونم فایل رو سیستم دیگه باز میکنم این تابع روی سیستم دیگه کار نمیکنه حتی بصورت ماژول ذخیره کردم و روی سیستم دیگه این افزونه رو اضافه کردم

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

      درود بر شما
      طبق این آموزش ،افزونه رو اضافه کنید به فایل و xlsm ذخیره کنید
      https://excelpedia.net/number-to-text/

      به شرطی که سیستم مقصد اجازه اجرای ماکرو داشته باشه ،کار میکنه

  • عطا ۷ مهر ۱۴۰۱ / ۱۱:۲۰ ب٫ظ

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

    • سامان چراغی ۱۶ مهر ۱۴۰۱ / ۱۰:۴۹ ق٫ظ

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

  • علی ۱۴ آبان ۱۴۰۰ / ۱۰:۱۲ ب٫ظ

    سلام؛
    با سپاس از مطالب و آموزش‌های خوبتون
    من در ابتدا سعی کردم ثبت نام کنم ولی متاسفانه با پیغام “درخواست شما نامعتبر است” مواجه شدم، سپس درخواست دادم که لینک دانلود به آدرس ایمیل ارسال بشه، در ظاهر این کار انجام میشه ولی در صندوق ورودی و هرزنامه من چیزی دریافت نمی کنم.
    سپاسگزار هستم اگر پیگیری بفرمایید.

    • آواتار
      حسنا خاکزاد ۱۵ آبان ۱۴۰۰ / ۱۲:۵۰ ب٫ظ

      درود بر شما
      چند روزی سایت اشکال فنی داشت
      که الان برطرف شده
      مجدد امتحان بفرمایید
      اگر نشد حتما با پشتیبانی از طریق شماره واتس اپ
      ۰۹۳۶۵۸۸۴۳۳۲ در ارتباط باشید

  • spk ۷ تیر ۱۴۰۰ / ۵:۵۷ ب٫ظ

    آقای مهندس واقعا دمت گرم امیدوارم هم خودت و هم عزیزانت همیشه در پناه خدا سلامت ، خوش وسربلند باشید .

    • سامان چراغی ۸ تیر ۱۴۰۰ / ۸:۰۵ ق٫ظ

      سپاس، همچنین شما

  • rahimzadeh ۶ دی ۱۳۹۹ / ۱۱:۲۳ ق٫ظ

    سلام من افزونه FarsiTools فارسی تولز رو دانلود و به Add-ins سیستم شخصی خودم در منزل اضافه کردم و از تابع S۲m تبدل تاریخ شمسی به میلادی استفاده کردم. و فایل مورد نظر را به سیستم محل کارم انتقال دادم با وجود اضافه کردن این افزونه در سیستم محل کار اما فرمولها را شناسایی نمی کند. وقتی بررسی کردم متوجه شدم سیستم محل کارم ادرس Add-ins را درایو سیستم منزل نشان می دهد و از آنجا که دسترسی به سیستم منزل ندارد امکان محاسبه و شناسایی تابع را ندارد.
    سوالم اینجاست که آیا راهی وجود دارد که فعال کردن افزونه FarsiTools به خود ساختار نرم افزار اکسل اضافه شود نه اینکه بر روی درایو یک کامپیوتر انجام شود؟ زیرا با انتقال فایل ساخته شده (فرموله شده ) به یک سیستم دیگر و با وجود فعال بودن افزونه فوق در سیستم مقصد باز هم عملکرد و محاسبه تابع در سیستم مقصد دچار مشکل می باشد. یعنی آدرس را مثل بقیه توابع از بطن خود نرم افزار استخراج کند نه از درایو کامپیوتر.

      • محمدی حسین ۲۶ فروردین ۱۴۰۰ / ۱۲:۴۹ ب٫ظ

        در تابع tbh سال های شمسی ۱۴۰۰ به بعد درست نمایش داده نمیشه! چی کار باید کرد

        • سامان چراغی ۲۸ فروردین ۱۴۰۰ / ۸:۲۷ ق٫ظ

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

  • آرش ۱۴ آذر ۱۳۹۹ / ۱۰:۱۶ ب٫ظ

    سلام وقتتون بخیر
    من از روش ۰۰۰۰″/”۰۰″/”۰۰ استفاده کردم
    اگه بخوام با تابع today() کار کنم امکانش نیست
    میخوام روزهای سپری شده از اون تاریخ تا الان رو حساب کنه قبلا با تابع days این کار رو میکردم
    مثلا
    today()-c15
    که سلول ۱۵ از همین روش ( ۰۰۰۰″/”۰۰″/”۰۰ ) استفاده شده

    • سامان چراغی ۲۲ آذر ۱۳۹۹ / ۰:۲۴ ق٫ظ

      این روش برای بدست آوردن فاصله زمانی دو تاریخ مناسب نیست، چون تابع Today تاریخ میلادی امروز رو میده که عدد متناظرش رو از عدد شمسی که وارد کردید کسر میکنه و این عدد درست نیست.
      اگر قصد دارید از تابع Today استفاده کنید، حتما باید در سلول C15 هم تاریخ میلادی وارد کنید.

  • حسین پرنده غیبی ۱۳ مهر ۱۳۹۹ / ۳:۴۲ ب٫ظ

    سلام. افزونه تاریخ شمسی شما رو خریدم. عالی بود. فقط یک نکته چطوری می‌تونم از این افزونه در بخش هدر شیت استفاده کنم؟

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

      درود بر شما
      امکانش نیست

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

    سلام.
    دمت گرم.

  • پوریا ۲۴ تیر ۱۳۹۹ / ۱۱:۲۳ ق٫ظ

    سلام
    مرسی از شما به خاطر پاسخگویی خوبتون اکسل ۲۰۱۶ دارم و ویدوز ۱۰
    من از دوتا سایت صدور به اکسل گرفتم یکی تاریخش میلادی میاد یکی شمسی
    هر دوتا رو می خوام مرج می کنم به خاطر همین تاریخ میلادی رو به شمسی تبدیل می کنم ولی وقتی زیر هم پیست می کنم تاریخ ها به درستی sort نمیشه
    میشه لطفا بفرمایید چه می شه کرد؟؟

    • سامان چراغی ۲۴ تیر ۱۳۹۹ / ۱۱:۴۳ ق٫ظ

      سلام
      ممنون، برای اینکه تاریخ ها Sort بشن باید ماهیت همه تاریخ ها، تاریخ میلادی باشه.
      احتمالا تاریخ شمسی که از سایت های دیگه خروجی گرفتید به صورت متن هستند.
      باید تاریخ شمسی رو به میلادی تبدیل کنید و Sort رو انجام بدید.

  • Behnam ۱۹ اردیبهشت ۱۳۹۹ / ۴:۴۵ ب٫ظ

    سلام
    خسته نباشید من میخاستم تو اکسل کارمندان یک شرکت رو به صورت هوشمند روزهای حضور در شرکت رو برحسب تاریخ محاسبه کنم
    فرض مثال کارمندی در ۲۰ اردیبهشت از مرخصی برمیگرده و قراره ۱۸ روز در اون محل به کار بپردازه من میخام تاریخ ۲۰ اردیبهشت رو ثبت کنم که اکسل بتونه بصورت هوشمند به من بعد از ۱۸ روز بگه (با استفاده از رنگ سلول )وقت مرخصی کارمند مورد نظر رسیده و من نیازی به محاسبه نداشته باشم آیا چنین چیزی در اکسل امکان پذیره؟
    در ضمن با اکسل ۲۰۰۷ میتونم همچین کاری رو انجام بدم؟

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

      درود
      اگر اکسل ۲۰۱۶ استفاده کنید خیلی راحت میتونید انجامش بدید
      در غیر اینصورت باید یکی از روش های ارائه شده در مقاله بالا رو انتخاب کنید
      این مقاله رو هم راجع به الارم بخونید
      https://excelpedia.net/excel-alarm/

ارسال دیدگاه

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

توسط
تومان