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

دیدگاه کاربران
  • سحر ۱۳ خرداد ۱۳۹۷ / ۹:۳۱ ق٫ظ

    سلام و درود
    من میخام تاخیر ورود پرسنلم رو هر روز ثبت کنم و در نهایت با ساعت هایی که سبت به ساعت ۸ دیر اومدن و تاخیر شده بهم جمع بده
    که جمع من بشه ۸ معادل یک روز کاری بی حقوقشون کنم ۱ روز
    کسی میتونه کمکم کنه

  • اسماعیل ۲۸ اسفند ۱۳۹۶ / ۱۰:۳۰ ق٫ظ

    سلام؛
    حاصل تفریق ساعت شروع و پایان رو به دقیقه با فرمول SUM(HOUR(AS1620-AT1620)*60;MINUTE(AS1620-AT1620)) نوشتم، اما یک مشکل دارم.
    برای مواقعی که ساعت پایان کوچک تر از ساعت شروع هست Error میده.
    مثلا شروع ۲۳:۵۰ و پایان ۰۰:۳۰
    لطفا با یک روش ساده، راهنمایی کنید!!!!!
    بسیار سپاس.

    • سامان چراغی ۲۸ اسفند ۱۳۹۶ / ۱۰:۵۲ ق٫ظ

      سلام
      کافیه با تابع MAX ساعت بزرگتر رو پیدا کنید و با تابع MIN ساعت کوچکتر و حاصل این دو تابع رو از هم کم کنید.

      • اسماعیل ۲۸ اسفند ۱۳۹۶ / ۱۱:۱۶ ق٫ظ

        ممنون از راهنمایی شما.
        باید تفاوتش بشه ۴۰ دقیقه، با این روشی که فرمودید، میشه ۱۴۰۰.
        شروع ۲۳:۵۰ بوده و پایان ۰۰:۳۰ روز بعدش

        • سامان چراغی ۲۸ اسفند ۱۳۹۶ / ۱۱:۴۱ ق٫ظ

          خواهش میکنم
          با فرمول زیر من تست کردم دقیقا ۴۰ دقیقه میده:
          (MAX(H22,H23)-MIN(H22,H23))*24*60
          تو این فرمول فرض شده تو یکی از سلول ها H22 و H23 ساعت نوشته شده.
          نکته ای که هست اینه که اگه شما میخواید مقدار دو ساعت که در بازه ۲۴ ساعت هست رو کم کنید مشکلی نداره که به صورت بالا در سلول بنویسید (مثلا ۰۰:۳۰ یا ۲۳:۵۰) اما وقتی دارید دو ساعت در روز های مختلف رو حساب میکنید دیگه باید با تاریخ زده بشه (مثلا ۱/۱/۱۹۰۰ ۱۲:۳۰:۰۰ AM ) که دقیقا محاسبه بشه.

  • فرهاد ۱۶ اسفند ۱۳۹۶ / ۱۰:۱۰ ب٫ظ

    سلام. ممنون می شم اگر بفرمایید چظور می شه تاریخ خورشیدی رو به میلادی تبدیل کرد در اکسل

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

      سلام
      در همین آموزشی که در بالا هست، یک فایل نمونه ارائه شده که فرمول تبدیل تاریخ ها به هم در اون موجود هست….
      فایل اکسل رو دانلود کنید متوجه میشید

  • mahyar1389 ۱۵ اسفند ۱۳۹۶ / ۵:۳۰ ب٫ظ

    سلام
    بنده یک فرمول برای محاسبه مدت زمان می خوام برای تاریخ شمسی برای مثال یک خودرو درتاریخ ۱۳۹۶/۱۰/۱۲ در ساعت ۰۹:۰۰ واردت تعمیرگاه می شود و در تاریخ ۱۳۹۶/۱۰/۱۵ در ساعت ۱۵:۳۰ از تعمیرگاه خارج می شود بنده می خواهم مدت زمان توقف این دستگاه رو بدست بیارم لطفاً اگر می توانید فرمولی در اکسل برای بنده طراحی کنید و هر چه هزینه آن بشود پرداخت خواهم کرد
    ممنون

    • سامان چراغی ۱۵ اسفند ۱۳۹۶ / ۶:۲۹ ب٫ظ

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

  • nasim ۱۵ اسفند ۱۳۹۶ / ۳:۵۷ ب٫ظ

    سلام ممنون بابت مطالب مفیدتون
    من میخوام در یه سلول از اکسل تاریخ به روز رو داشته باشم
    با تابع today به میلادی میده تاریخ رو – من شمسی میخوام بشه
    به این روش که توی عکس نشون دادین” فورمت سلول ” خواستم با این روش انجام بده اما توی اکسل من گزینه persian خالی رو داره برای شما persian (iran) هست و گزینه پایینش calendar type = persian هست ولی برای من نداره این گزینه رو
    میشه راهنماییم کنید

    • سامان چراغی ۱۵ اسفند ۱۳۹۶ / ۶:۲۲ ب٫ظ

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

  • عباس ۱۶ دی ۱۳۹۶ / ۲:۱۱ ب٫ظ

    سلام
    در روش countifs حتما باید شروط رو با عدد مشخص کنیم و نمیشه آدرس سلول رو بدیم؟
    یعنی به جای شرط ”<=961001″ نمیشه بگیم "<=D5" ؟؟

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

      سلام
      چرا میشه
      منتها اینطوری:
      “<="&D5 سلول رو جدا وصل کنید به علامت بزرگتر

      • عباس ۱۶ دی ۱۳۹۶ / ۵:۱۰ ب٫ظ

        خب اگر شیت تاریخ با شیت محاسبات متفاوت باشه چی؟
        یعنی من در شیت «تاریخ» بیام روزهای یک سال رو به ترتیب بذارم و در شیت «محاسبه» بیام دو تا روز (دو تا سلول) رو از هم کم کنم. چطور متوجه میشه سلول D5 متعلق به کدوم شیت هست؟ در واقع چطور به اکسل بگم برو در سلول های شیت «تاریخ»، سلول D5 از شیت «محاسبه» رو پیدا کن و مثلا بزرگ تر از اون رو محاسبه کن؟

        ضمن اینکه فرمت سایتتون “” ها رو در ابتدا و آخر جملات به “ تبدیل میکنه که کپی کردن رو سخت میکنه؛ برای این هم تدبیری بیندیشید خیلی خوبه :-)

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

          خب کافیه اسم شیت هم به سلول وصل باشه دیگه
          یعنی اگه اسم شیت شما “محاسبه” هست، آدرس سلولتون میشه این:

          ="=>"&محاسبه!D5
          

          یا اینکه از تابع Address استفاده کنید برای این موضوع یعنی:

          =address(5,4,1,1,"محاسبه")
          

          خروجی این تابع میشه سلول D5 از شیت محاسبه

          برای اون مورد هم چشم :). بررسی میکنیم

          • عباس ۱۷ دی ۱۳۹۶ / ۳:۱۸ ب٫ظ

            خیلی خیلی ممنونم
            برای بازه هم همینطوری میشه آدرس دهی کرد؟
            مثلا پشت A1:A365 بذاریم تقویم! درست میشه؟
            متأسفانه این ریزه کاری ها همیشه باعث میشه یه جای کار بلنگه و آدرس دهی غلط بشه!

            منطق آدرس دهی رو هم توضیح دادید در سایت؟ لطفا لینکش رو برام بذارید. ?

          • آواتار
            حسنا خاکزاد ۱۸ دی ۱۳۹۶ / ۹:۰۳ ق٫ظ

            خواهش میکنم
            امتحان کنید حتما نتیجه میگیرید.
            الگو حتما باید رعایت بشه.
            این لینک رو راجع به تابع Address بخونید….

            https://excelpedia.net/address-function/

      • Saeed Haeri ۱۵ بهمن ۱۳۹۶ / ۲:۵۰ ب٫ظ

        سلام. همچنین آیا میشه به جای “=۹۶۰۱۰۲

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

    با سلام
    پس از نصب لینک افزونه که گذاشتین پایین صفحه (دانلود افزونه و فایل تبدیل تاریخ میلادی به شمسی و برعکس) چیکار باید بکنیم تا تاریخ به شمسی تغییر کنه؟
    توضیح بدین لطفا…
    با تشکر

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

      سلام
      نحوه نصب افزونه رو از لینک زیر ببینید.
      https://excelpedia.net/number-to-text/

      بعد از نصب یک سری توابع اضافه میشه به اکسل که هر کدومش ی کاری انجام میده.

      در مورد فایل هم که حاوی فرمول هست، کافیه سل مرجع رو ببینید و تاریخ مورد نظر رو در سلول مرجع بذارید تا تبدیل بشه

  • ahmad ۲۴ مهر ۱۳۹۶ / ۱۱:۳۳ ق٫ظ

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

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

      سلام
      این قسمت از آموزش به روز شد.

  • ابوالفضل حسنلو ۲۸ شهریور ۱۳۹۶ / ۱۲:۲۳ ب٫ظ

    در توضیحات حضرت عالی در آخر تو تا تاریخ از هم دیگر کسر نشد
    بایستی دقیقا با راهنمای شما بتوان دو تا تاریه رو ازهم کسر کرد .
    فقط فایل دانلود گذاشتید و در آخر هیچ من نفهمیدم نتیجه چی شد
    چطور دو تاریخ رو کم کنم
    شما فقط به فقط یک شیت خالی رو در نظر بگیر و در دو سلول هر کدام یک تاریخ نوشته شده (۹۰/۰۷/۱۵) و سلول دیگر ۹۵/۱۰/۰۱)
    این دو سلول رو برایم منها کنید . همین . نحوه کار را توضیح دهید

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

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

      این سوال “سوال: فرض کنید میخواهیم ببینیم فاصله بین دو تاریخ ۹۶/۰۲/۰۴ و ۹۶/۱۰/۰۱ چند روز است؟”، دقیقا سوال شماست و جواب داده شده.
      فقط باید دیتابیسی مشابه عکس ۲ تهیه کنید که بشه فاصله اونها رو تعیین کرد. فرمول countif مربوطه هم نشون داده شده

  • احمدرضا ۲۲ شهریور ۱۳۹۶ / ۶:۴۴ ب٫ظ

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

    • سامان چراغی ۲۴ شهریور ۱۳۹۶ / ۲:۴۴ ب٫ظ

      سلام
      خیلی ممنون
      مشکل برطرف شد.
      میتونید ثبت نام کنید.

ارسال دیدگاه

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

توسط
تومان