کار با توابع تاریخ شمسی در اکسل

سلام به همه دوستان

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

خب بریم سراغ اصل مطلب. ابتدا یک شیت جدید باز کنید. حالا مثل تصویر زیر روی Sheet1 راست کلیک کنید و از منوی باز شده گزینه View Code رو انتخاب کنید.

تاریخ شمسی در اکسل

با انتخاب این گزینه پنجره Visual Basic for Applications باز میشه که از اون میتونیم برای کدنویسی VBA در اکسل استفاده کنیم. در اینجا میتونیم کدهای مربوط به کار با تاریخ شمسی در اکسل رو به فایل اکسل خودمون اضافه کنیم.

برای اینکار ابتدا مثل تصویر زیر از منوی Insert گزینه Module رو انتخاب کنید.

تاریخ شمسی در اکسل

با اینکار یک Module به فایل اکسل اضافه میشه که ما کدهای مربوط به تاریخ شمسی رو در اون قرار میدیم. برای اینکه کدها رو داخل ماژولی که ایجاد کردیم قرار بدیم از بخش Project Explorer رو Module1 دوبار کلیک میکنیم.

تاریخ شمسی در اکسل

حالا فایل مربوط به تاریخ شمسی رو از اینجا دانلود کنید و فایل متنی داخل اون رو در notepad باز کنید و تمام کدهای داخلش رو در پنجره Module1 کپی کنید. با اینکار توابع مربوط به کار با تاریخ شمسی در اکسل به فایل ما اضافه شدند و میتونیم از اونها استفاده کنیم.الان پنجره Visual Basic for Applications شما باید مثل تصویر زیر باشه.

تاریخ شمسی در اکسل

اما قبل از استفاده از این توابع بهتره فایلمون رو به صورت صحیح ذخیره کنیم. همونطور که میدونید پسوندی که اکسل برای ذخیره فایل ها به صورت پیش فرض از اون استفاده میکنه در نسخه های قدیمی تر xls و در نسخه های جدیدتر xlsx هست. این پسوندها قابلیت ذخیره سازی کدهای VBA رو ندارند. به این معنی که اگر شما فایلتون رو با این پسوندها دخیره کنید کدهای VBA که به فایلتون اضافه کردید ذخیره نمیشن و دفعه بعد که فایلتون رو باز کنید تمام کدها از فایلتون حذف شده و عملاً فایل شما به درستی کار نمیکنه. برای اینکه این مشکل پیش نیاد باید فایلمون رو با یکی از پسوندهای xlsm یا xlsb ذخیره کنیم. در خصوص تفاوت این دو پسوند بعداً در یک مطلب جداگانه توضیح میدم. برای اینکه فایلمون را با پسوند xlsm ذخیره کنیم مثل تصویر زیر در پنجره Save As نوع پسوند رو در قسمت Save As Type برابر (Excel Macro-Enabled Workbook (*.xlsm قرار میدیم.

تاریخ شمسی در اکسل

اگر تمام مراحل رو به درستی انجام داده باشید باید به توابع کار با تاریخ شمسی دسترسی داشته باشید. برای آزمایش این مساله روی یکی از سلول ها شروع به فرمول‌نویسی کنید. اگر با نوشتن عبارت sh= در فرمول سلول تایع shamsi مثل تصویر زیر در گزینه ها نمایش داده شد، توابع شمسی به درستی در فایل اکسل شما فعال شدند و شما میتونید از اونها استفاده کنید.

تاریخ شمسی در اکسل

رفع مشکل ؟ شدن کاراکترهای فارسی در VBA: اگر کاراکترهای فارسی شما در پنجره Visual Basic Editor به صورت ؟؟؟ نمایش داده میشه کافیه فایل shamsi-date.txt رو به جای نوت پد با Wordpad باز کنید و پس از کپی کردن کدها از داخل Wordpad اونها رو داخل visual basic editor پیست کنید.

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

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

مثال: ()Shamsi=          نتیجه:  13940114

تابع Rooz: این تابع روز مربوط به یک تاریخ مشخص رو برمیگردونه

مثال: (13940114)Rooz=          نتیجه:  14

تابع Mah: این تابع ماه مربوط به یک تاریخ مشخص رو برمیگردونه

مثال: (13940114)Mah=          نتیجه:  1

تابع Sal: این تابع سال مربوط به یک تاریخ مشخص رو برمیگردونه

مثال: (13940114)Sal=          نتیجه:  1394

تابع Kabiseh: این تابع مشخص میکنه که آیا سال موردنظر کبیسه هست یانه. در صورتی که سال موردنظر کبیسه باشه عدد 1 و در غیر اینصورت عدد 0 به عنوان نتیجه تابع برگردونده میشه.

مثال: (1394)Kabiseh=          نتیجه:  0

تابع ValidDate: این تابع تاریخ شمسی که به اون داده بشه رو بررسی میکنه و در صورتی که تاریخ داده شده معتبر و درست باشه true و در غیر اینصورت false رو برمیگردونه.

مثال: (13940114)ValidDate=          نتیجه:  true        مثال: (13940134)validdate=          نتیجه:  false

تابع AddDay:  این تابع تعداد روز مشخصی رو به یک تاریخ اضافه میکنه.

مثال: (7;13940114)AddDay=          نتیجه:  13940121

تابع DayWeek: این تابع نام روز تاریخ شمسی که به اون داده بشه رو برمیگردونه.

مثال: (13940114)DayWeek=          نتیجه:  جمعه

تابع Dat: این تابع تاریخ شمسی رو به همراه روز هفته برمیگردونه

مثال: ()Dat=          نتیجه:  جمعه 1394/1/14

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

مثال: (13940114;13940107)Diff=          نتیجه:  7

تابع DayWeekNo: این تابع عدد مربوط به روز هفته یک تاریخ شمسی رو برمیگردونه. به عنوان مثال اگر تاریخ موردنظر روز شنبه باشه عدد 0، در صورتی که یکشنبه باشه عدد 1 و …

مثال: (13940110)DayWeekNo=          نتیجه:  2

تابع MahName: این تابع عدد مربوط به یک ماه رو دریافت میکنه و نام ماه مربوط به اون رو برمیگردونه.

مثال: (2)MahName=          نتیجه:  اردیبهشت

تابع SalMah: این تابع شش رقم اول یک تاریخ شمسی رو که نشون دهنده سال و ماه اون هست رو برمیگردونه.

مثال: (13941115)SalMah=          نتیجه:  139411

تابع MahDays: این تابع تعداد روزهای یک ماه رو برمیگردونه.

مثال: (1;1394)MahDays=          نتیجه:  31

تابع Make_Date: این تابع سال، ماه و روز تاریخ شمسی رو با علامت “/” از هم دیگه جدا میکنه.

مثال: (13940114)Make_Date=          نتیجه:  1394/01/14

تابع NextMah: این تابع مقدار سال و ماه رو به عنوان ورودی میگیره و ماه بعد رو به عنوان نتیجه برمیگردونه.

مثال: (139412)NextMah=          نتیجه:  139501

تابع PreviousMah: این تابع مقدار سال و ماه رو به عنوان ورودی میگیره و ماه قبل رو به عنوان نتیجه برمیگردونه.

مثال: (139407)NextMah=          نتیجه:  139406

تابع SubtractDay: این تابع تعداد روز مشخصی رو از یک تاریخ شمسی کم میکنه.

مثال: (6;13940718)SubtractDay=          نتیجه:  13940712

تابع Firstday: این تابع یک سال و ماه شمسی رو میگیره و شماره اولین روز اوم ماه رو برمیگردونه. (برای شنبه عدد 0، برای یکشنبه عدد 1 و …)

مثال: (6;1394)Firstday=          نتیجه:  1 (یکشنبه)

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

پی‌نوشت: کدهایی که در این آموزش ازشون استفاده کردم نوشته‌ی من نیست. اگر کسی میدونه که این کدها اجازه انتشار نداره لطفاً به من اطلاع بدید تا این مطلب رو حذف کنم.

390 thoughts on “کار با توابع تاریخ شمسی در اکسل”

  1. فایل متنی مربوط به تاریخ شمسی مطالب فارسی را به درستی نمایش نمیدهد. لطفاً یک لینک دانلود دیگر ارائه دهید.

    1. سلام به شما مدیر سایت و شما خواننده ی محترم
      یکی از پر کاربردترین تابع های اکسل همین تابع تاریخ شمسی هست.
      برای راحتی کار با این توابع شما میتونید توابعی که لازم دارید رو بجای اسم انگلیسی با اسم فارسی فراخوانی کنید برای این منظور برید به ماژول1 و اسم تابع مورد نظر رو با سرچ پیدا کنید و بعد اسم تابع رو در هر جای اون تابع اومده به فارسی تغییر بدید و برای فراخوانی تابع در محیط اکسل تابع رو با حروف فارسی فراخوانی کنید!! (عملا دیگه نیازی نیست تغییر زبان بدید و انگلیسی کنید) برای من که تابع ()DAT= مورد استفاده بود dayweek که به فارسی روز هفته رو وارد میکرد برداشتم (لازم نداشتمش) و با تغییر اسم تابع و دستور داخل تابع به ()تا= خیلی کارم راحت شد.
      مرسی بابت مطالب خوبتون

      برای اینکه کامنتم بالای کامنتها بیاد مجبور شدم از پاسخ به استفاده کنم!!! لطفا کامنتهای جدید رو بالا بیارید 🙂 ممنون

  2. سلام … تنها از فرمول ()Shamsi= به درستی عمل میکنه بقیه که میزنم این میگه #VALUE! …. علتش چیه … ؟!

    1. یاسین اسماعیل پور

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

  3. با تشکر از شما و برنامه نویس این کد ها
    یک باگ جالب در مورد فرمول dayweek هست. این فرمول قرار است روز هفته یک تاریخ مشخص را برگرداند. طبق بررسی من، از امروز به عقب تا تاریخ 1380/10/11 (سه شنبه) این فرمول درست کار می کند ولی روز قبلش را اشتباه نشان می دهد (می شود چهارشنبه به جای دوشنبه) و همینطور از این روز به قبل، ایام هفته برعکس نشان می دهد یعنی هفته با جمعه شروع می شود و روز بعدش پنجشنبه است و روز قبلش چهارشنبه الخ.
    من کد نویسی بلد نیستم ولی اگر توانستم این کد را درست کنم اطلاع می دهم. خوشحال میشم اگر کسی تونست درستش کنه به من هم اطلاع بده

    1. یاسین اسماعیل پور

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

  4. با سلام
    نوشته ها (کاراکترهای فارسی ) به صورت ‘????? ???? ??? ?????? ??? داده میشه . این مشکل رو چطور حل کنم؟

    1. یاسین اسماعیل پور

      سلام احمد جان. موقعی که تو NOTEPAD سیستم باز میکنی هم این مشکل رو داره؟ این مساله معمولا به خاطر اینه که تنظیمات ویرایشگرت باید روی UTF8 باشه. اگر تنظیماتت رو روی utf8 بزاری باید درست بشه.

  5. آقای اسماعیل پور فوق العاده عالییییی بود.
    دستتون درد نکنه

  6. آقای اسماعیل پور شرمنده منم یه چند وقتیه مشکل آقای احمد رو دارم !!!!!
    نوشته ها (کاراکترهای فارسی ) به صورت ‘????? ???? ??? ?????? ??? داده میشه . utf8 رو از کجا پیدا کنم؟

    1. یاسین اسماعیل پور

      سلام. شما وقتی قایل Shamsi-Date.txt رو دانلود میکنید و توی notepad باز میکنید نوشته های فارسی به صورت صحیح نمایش داده میشه یا خیر؟

  7. به صورت text سیوش میکنم با adobe بازش میکنم اصن کلا زبونش میریزه به هم
    اگرم همونجا کپی پیست کنم که ؟؟؟؟؟؟ میاره به جای فارسیاش

    1. یاسین اسماعیل پور

      چرا با adobe باز میکنید؟ به صورت txt ذخیرش کنید و توی نرم افزار notepad ویندوز بازش کنید ببینید مشکل داره کلمات فارسی یا خیر.

  8. محمدمهدی

    اگه بخوام تو یک ستون تاریخ رو از اول ماه بنویسه تا اخرش چیکار باید بکنم؟! تابع خاصی داره؟

    1. یاسین اسماعیل پور

      برای اینکار تابع خاصی نداره محمد مهدی جان. باید با استفاده ترکیبی از تابع row، تابع shamsi و تابع addday پیاده سازی کنیش.

      1. حامد شرقی

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

  9. سلام
    من اختلاف دو تاریخ رو به صورت روز و ماه وسال میخوام
    تابعش موجود نیست ، چکار کنم؟؟
    ممنون

  10. واسه منم قسمت ها فارسی فایل مشکل داره ، با utf8 هم ذخیره میکنم
    اگه راه کاری پیشنهاد بدین ممنون میشم

  11. یاسین اسماعیل پور

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

    1. چرا یاسین جان
      ولی اون اختلاف رو به صورت روز میده
      من نتیجه رو به صورت سال و ماه و روز میخوام
      مثلا نتیجه بشه 25/8/20 25 سال و 8 ماه و 20روز

      1. یاسین اسماعیل پور

        تابعی واسه این کار وجود نداره خودت میتونی با یه محاسبه تقسیم و مانده به جواب مدنظرت برسی وحید جان

    2. واسه اون مشکل دیگه ام چی؟؟ میشه با یه پسوند دیگه واسم میل کنی اگه امکانش هست؟!!
      ممنون

  12. سلام
    آقا یاسین ممنونم از راهنمایتون
    کاری که گفته بودی با slxm سیو کنیم همون ماکرو؟

    1. یاسین اسماعیل پور

      بله. فایل هایی که ماکرو و کد VBA دارند رو باید با XLSM یا XLSB ذخیره کنی حمیدجان.

  13. پس چرا برای من متنی که با Shamsi-Date.txt ذخیره میکنم و با نوت پد باز میکنم هیچکدوم از متناش فارسی نیس؟ اون تنظیمات utf8 کجاس؟

    1. یاسین اسماعیل پور

      فایل shamsi-date.txt رو به جای نوت پد با wordpad باز کن و از داخل wordpad کپی کن و بعد داخل visual basic editor پیست کن ببین مشکلت حل میشه یا نه.

  14. فوق العاده عالییییی ممنون آقا یاسین. من هم مشکل کاراکتر فارسی به شکل ؟؟؟؟؟ رو دارم. توی نوت پد نوشته ها درسته ولی تو اکسل علامت سوال نشون میده. مشکل چیه؟ چطور با utf8 سیو کنم؟

  15. utf8 رو پیدا کردم و با اون سیو کردم ولی باز هم نشد. نوشته های فارسی ؟؟؟؟؟ نمایش داده میشه 🙁

    1. یاسین اسماعیل پور

      رضاجان فایل shamsi-date.txt رو به جای نوت پد با wordpad باز کن و از داخل wordpad کپی کن و بعد داخل visual basic editor پیست کن ببین مشکلت حل میشه یا نه.

      1. سلام
        مشکل من با استفاده از WORDPAD حل نشد
        چه جوری به UTF8 تغییر بدم؟
        ممنون

  16. مررررسی. آقا یاسین حل شد با همین فرمول شما. عالی. مرسی که خیلی زود جواب دادی و پیگیر هستی

  17. سلام
    آیا تابع بدست آوردن سال بعد هم وجود داره مثل NextMah که ماه بعد رو نشون میده؟

    1. یاسین اسماعیل پور

      خیر رضا جان چنین تابعی وجود نداره. اما شما به راحتی میتونی از طریق استفاده از فرمول LEFT به همون نتیجه برسی. مثال:
      =LEFT(13940718;4)+1

      1. با تشکر از پاسخ سوال قبل
        آیا تابعی وجود داره که با گرفتن یک تاریخ تعداد روزهای باقی مانده تا پایان سال رو نشون بده؟ مثلا با دادن تاریخ 25 اسفند عدد 4 رو نشون بده.

        1. یاسین اسماعیل پور

          سلام. نه این تابع وجود نداره اما شما میتونید خیلی راحت با استفاده از تابع left سال رو استخراج کنید، اون رو به علاوه یک کنید و با چسبوندن عبارت “0101” به انتهای متن، روز اول سال بعد رو ایجاد کنید و بعد اختلاف تاریخ موردنظرتون رو با اون از طریق تابع diff حساب کنید.

          1. یاسین جان، منظور از چسبوندن عبارت “0101” به انتهای متن چیه ؟ یعنی دستی اونو به سال بدست اومده اضافه کنم یا این عبارت رو به انتهای تابه left اضافه کنم؟؟؟
            درباره تابع diff هم باید بگم که، اگه تاریخ ها رو به صورت اسلش دار ( / ) وارد کنیم این تابع دیگه عمل نمی کنه.

          2. یاسین اسماعیل پور

            شما باید 0101 رو با علامت & به انتهای سال بعد هست اضافه کنی. برای تابع diff هم خب مشخصه که باید اول فرمتش رو بدون / کنی بعد بزاری تو تابع.

  18. سلام وقتی روی شیت راست کلیک میکنم view code غیر فعال هست چکار کنم؟

    1. یاسین اسماعیل پور

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

  19. سلام.
    من فایل رو هم با نوت پد و هم با وردپد بازش کردم. با پسوند xlsm.و xlsb هم ذخیره اش کردم. اما وقتی که از ورکشیت خارج میشم و دوباره وارد میشم فایلها رو نمیتونه بخونه .ممنون میشم اگه راهنمایی بفرمایین.

    1. یاسین اسماعیل پور

      فایل تکست رو که نباید با پسوند xlsm ذخیره کنید. باید کپی کنید تو فایل اکسلتون. توضیحات رو مجددا و با دقت بیشتر بخونید

  20. ممنـــــــــــــــــــــــــــــــــــون از راهنمایی هاتون …..
    راستی توی قسمت مثال تابع Make_Date اشتباه تایپی وجود داره عبارت MahDays به جای Make_Date استفاده شده.
    و میخواستم بدونم این فونت که برای ارائه مطالب سایت از اون استفاده میکنید اسمش چیه ؟

    1. یاسین اسماعیل پور

      مرسی از دقتت. اصلاح شد. فونتی که من اینجا استفاده میکنم اسمش DroidNaskh هست رضا جان.

  21. سلام و عرض ادب.
    منم دقیقا طبق دستور شما فایل تکست رو توی اکسل کپی میکنم. بعد فایل اکسل رو هم با پسوند xlsm ذخیره میکنم. تا وقتی که از فایل اکسل خارج نشدم جواب میده. اما اگر از فایل اکسل خارج شدم و دوباره وارد همون فایل اکسل که ذخیره اش کردم بشم توابع شمسی رو ندارم .
    سپاس که وقت میذارین.

    1. یاسین اسماعیل پور

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

  22. سلام و عرض ادب مجدد.
    اول اینکه من دست مریزاد میگم بابت این سایت آموزنده و تشکر میکنم بخاطر وقتی که میذارین.
    مهندس وقتی فایل و باز میکنم کدها حذف نشدن همون طور که میفرمایین مشکل از تنظیمات ماکرو هست. اما چطور تنظیمات و اصلاح کنم؟.
    سپاس.

  23. ضمن تشکر از شما
    برنامه برای من اجرا شد و لی مشکلی که وجود داره اینه که مثلا” فرمول =shamsi که تاریخ روز رو نشون میده اگر روز بعد فایل رو باز کنی با تاریخ جدید آبدیت نمیشه و همون تاریخ روز قبلش هست و اگر دبل کلیک کنی روی فرمول و اینتر کنی درست میشه اگر راهکاری وجود داره لطفا اعلام کنید

    1. یاسین اسماعیل پور

      سلام حمیدجان
      برای حل این مساله سه راه وجود داره:
      یکی اینکه هر بار خواستی تاریخا آپدیت بشن از کلید ترکیبی ctrl+alt+shif+f9 استفاده کنی.
      میتونی در event باز شدن فایلت کد Application.CalculateFullRebuild رو قرار بدی. که با هر بارر باز شدن فایل تابعت دوباره محاسبه بشه
      یا در خط اول کد مربوط به تابع shamsi عبارت Application.Volatile رو قرار بدی که اینکار باعث میشه تابع شمسی با هر بار تغییر مقادیر سلول ها دوباره محاسبه بشه (مثل توابع now، offset و …).

  24. سلام اقا
    بابت آموزشات خیلی ممنونم دستت درد نکنه
    یه سوال داشتم از خدمتت،اگه بخوایم تاریخ با / از هم جدا بشن باید چی کار کرد؟ دنبال یه چیزی مثل input mask تو اکسس میگردم واسش ولی هرچی گشتم کمتر پیدا کردم.
    ممنون میشم راهنمایی کنی

    1. یاسین اسماعیل پور

      سلام وحید جان
      ممنون
      در مورد سوالات تا جایی که من میدونم اگه بخوای input mask مثل اکسس داشته باشی راهش کدنویسی VBA هست فقط

  25. با سلام و احترام خدمت دوستان عزیز
    واقعا دستتون درد نکنه
    می خواستم بدونم اگه بخواهیم مدت زمان یه تاریخی رو بدست بیاریم چگونه میشه این کا رو کرد
    مثلا از 1393/07/01 تا 1394/05/31 چند روز هست .
    ممنون

    1. یاسین اسماعیل پور

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

  26. زی روبرتو

    سلام.فایل مربوط به تاریخ شمسی به هیچ صراطی مستقیم نیست!! نه note pad و نه word pad .کلا به هم ریخته نشون میده.راهی هست؟

  27. با سلام و تشکر بی نهایت از پاسخگویی شما
    من همه ی موارد رو رعایت کردم متاسفانه #value! میشه به عنوان مثال من با برنامه حسابداری کلیه تاریخ فاکتورهارو دریافت کردم وبرای سررسید گزاری آنها در 120روز دیگر تاریخ صدور فاکتور را با 120 جمع کردم از تابع =addday(13940101;120) ولی ایراد گرفت حتی فرمت ستون تاریخ استخراج شده رو هم روی date گذاشتم

  28. من همه کارها را مرحله به مرحله انجام دادم وshamsi-date.txt را با نوت پد یا ورد پد باز میکنم اما ارور میده حتی utf8 را هم انجام دادم اما نمیشه

  29. البته در یک کامپیوتر همه کارها را انجام دادم درست بود نمی دونم ایراد از کجاست

  30. واقعاً ممنون
    امیدوارم خدا هرچی میخوای بهت بده:-)
    فقط کاش برای تاریخ هایی که با / جدا شده هم یه راه حلی میزاشتی؟:-/

    1. یاسین اسماعیل پور

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

  31. مرتضی فرهادی

    با سلام مشکل بنده با تایپ تاریخ شمسی در سلول است به عنوان مثال اگر داخل سلول تایپ کنیم 1394 اکسل این تاریخ رو با سال 1394 میلادی اشتباه میگیره یا اگر سال رو 94 تایپ کنیم به جای سال 1394 سال 1994 میلادی رو محاسبه می کنه
    ممنون میشم راهنمایی کنید

    1. یاسین اسماعیل پور

      سلام مرتضی جان
      شما باید فرمت سلول رو از date به text یا number تغییر بدی

  32. سلام. آقا من از این ماکرو شما استفاده کردم، منتها به طرز عجیبی ضمن شناختن درست توابعتون متأسفانه بعد اینتر کردن با پیغام معروف:
    .The formula you typed contains an error
    مواجه میشوم. ممنون میشم اگه بگی چجوری میشه متوجه شد ایراد از کجاست.

  33. حل شد برادر. ایراد از کاراکتر بود. چرا تو متن از “;” استفاده کردی بجای “,”

    1. یاسین اسماعیل پور

      دلیلش اینه که توی خیلی از سیستم ها عبارت جدا کننده پارامترهای اکسل “;” هست

  34. با سلام
    احتراما انکود فایل ارسالی درست نیست. نه تو نوت پد نه توی ورد پد.
    تو ورد آفیس با انکود ms-arabic فقط باز می کنه که اگر از اونجا کپی پیست کنم همه علامت سوال میره
    MahName = “Ïí”
    Case 11
    MahName = “Èåãä”
    Case 12
    MahName = “ÇÓÝäÏ”
    این هم نمونش.
    با تشکر

    1. یاسین اسماعیل پور

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

  35. سلام. ممنون از ماکروی فوق العاده ای که گذاشتید.
    اگه بخوام تابعی برعکس SubtractDay ایجاد کنم که یع تعداد روز رو به روز مشخصی اضافه کنه، و همینطور این اعمال رو برای ماه و سال هم بنویسم چطور باید این کارو بکنم؟ درصورت امکان راهنمایی کنید. با تشکر

  36. محمد صادق

    *******آی لــــــــــــــــــــاو یـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــو*******

  37. سلام
    از ماژول توابع تاریخ شمسی استفاده کردم. با وارد کردن sh= دستور shamsi= هم نشون داده میشه اما نتیجه #NAME?
    در سلول نمایش داده میشه. فرمت سلول روهم به جنرال هم text و هم Date فرقی نداره هیچ کدوم جواب نمیده

    1. یاسین اسماعیل پور

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

    1. یاسین اسماعیل پور

      ممنون از اینکه اطلاعاتتون رو در اختیار سایر دوستان گذاشتید

  38. محمد قدرتی

    سلام
    چجوری میتونم تاریخی ک کاربر وارد کرده رو با امروز اختلاف بگیرم
    یا واضحتر بگم چجوری میتونم 1394/09/10 رو به تاریخ 13940910 تبدیل کنم تا بتونم تابع diff رو فراخوانی کنم؟؟؟

    1. یاسین اسماعیل پور

      سلام.
      از تابع Replace استفاده کنید. مثال:
      replace(“1394/09/01″;”/”;””)

    2. من هدر تابع Diff رو به این شکل عوض کردم:
      Public Function Diff(ByVal strFromDate As String, ByVal strTo_Date As String) As Long
      (متغیر ها رو از جنس رشته تعریف کردم)

      بعد چهار خط زیر رو توی تابع Diff قرار دادم:

      Dim FromDate As Long
      Dim To_Date As Long
      FromDate = CLng(Replace(strFromDate, “/”, “”))
      To_Date = CLng(Replace(strTo_Date, “/”, “”))

      به بقیه تابع هم دست نزدم
      این جوری چه به صورت اول (13960102) چه به صورت جدید (1396/01/02) تاریخ رو به تابع ارسال کنیم جواب میده

  39. سلام …همه فرمول به درستی عمل نمیکنه وپیغام #VALUE! …. علتش چیه … ؟! لطفا راهنمایی کنید گام به گام مشکل از چیه ماکرو یا تاریخ دستگاه یا….

    1. یاسین اسماعیل پور

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

  40. سلام…آقا من با فرمول addday مشکل دارم .. هر چی گفتی هم رعایت کردم اما نمیشه… فرمول های دیگه هم مشکل ندارن …. لطفا کامل راهنمایی کنید خیلی لازمش دارم

  41. لطفا یکی در مورد فرمول addday کمک کنه… وقتی میزنم error میده اما بقیه فرمول ها رو راحت میتونم بزنم…dayweek,validdate,,shamsi,,, اینا رو راحت میزنم

    1. یاسین اسماعیل پور

      دوست من. من توضیحات رو کامل دادم. مطابق این توضیحات عمل کنید نباید مشکلی باشه. باید ببینید کجا رو دارید اشتباه میکنید

  42. خیلیییییییییییییییی عالیییییییییییییی بود.چاکککککککککککرررررررررررررررررررررررررررررررررررمممممممممممممممممممممممممم یاسییییییییییین جانننننننننننننننننننننننننننننننننننن.ماچچچچچچچچچچچچچچچچچچ

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

  44. سلام
    یه سوال ؟؟؟!!!
    من دوتا شیت دارم..! اولین شیت ماله امروزه ..! اطلاعات و وارد کردم حال میخواهم تاریخ امروز تو یه سلولی به صورت اتوماتیک ذخیره بشه.
    یه روز بعد
    من یه شیت دیگه ساختم باز اطلاعات امروزمم وارد کردم ذخیرشم کردم حالا برمیگردم به اطلاعات روز قبلم
    چون روز قبلو با استفاده از کدهای بالایی!! تاریخو وارد کردم …! تاریخ امروز رو نشون میده.
    چی کار کنم تو همون روز باقی بمونه و ذخیره بشه؟

    1. یاسین اسماعیل پور

      سلام. شما یا باید paste as value استفاده کنید و یا تاریخ رو با کد vba قرار بدید نه فرمول

  45. سلام چطوری میتونم تاریخی رو که به صورت دستی وارد میکنم به صورت شمسی وارد کنم؟

    1. یاسین اسماعیل پور

      با استفاده از برنامه نویسی VBA میشه اینکار رو انجام داد. آیا با VBA آشنایی دارید؟

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

    1. یاسین اسماعیل پور

      حسین جان توضیحش یکم طولانیه و چون شما آشنایی نداری بعید میدونم بتونی پیادش کنی

  47. من هدفم اینه که تاریخ چک رو که وارد میکنم موعد سررسید چک یه پیغامی بهم بده
    ممنون میشم راهنمایی کنین

  48. دست شما درد نکنه خیلی عالی بود ما شرمنده ایم که فقط مصرف کننده هستیم

  49. جواد حسینی

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

  50. جواد حسینی

    سلام
    وقتی از تابع =dat() استفاده می کنم بصورت ??????1394/11/25
    می خواستم ببینم مشکل از کجاست . روزهای هفته رو بصورت علامت ؟ نشان میدهد.

    1. یاسین اسماعیل پور

      سلام
      مشکل شما از encoding هست. تنظیمات ویندوز خودتون رو روی persian قرار بدید

    2. سلام و خسته نباشید در داخل پرانتز ()=shamsi آیا به یک سلول که که تاریخ میلادی دارد باید ارجاع داد تا تبدیل به تاریخ شمسی شود و فرمت ورودی تاریخ میلادی باید به چه صورت باشد

  51. اقا ياسين
    اين / را بايد بصورت دستي از بين اعداد حذف كرد يا تابعي براي حذف آن وجود داره

    1. یاسین اسماعیل پور

      نه سعیدجان از تابع substitute میتونی برای اینکار استفاده کنی. مثال:
      =SUBSTITUTE(“1394/10/01″;”/”;””)

  52. ممنون از راهنماییت
    لطف میکنی بگی فرمولی هست که بشه باهاش عدد 13 رو به اول 94 اضافه کنه و تو تاریخ بنویسه
    مثلا : 94/12/01 بشه 1394/12/01 یا 94/12/01 بشه 13941201 تا بشه ازش اختلاف تاریخ گرفت
    ممنون ازت دوست من

    1. یاسین اسماعیل پور

      سلام سعید جان. برای اینکار میتونی از علامت & استفاده کنی. “13”&”94/11/12″

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

    1. یاسین اسماعیل پور

      اگه بخوای از فرمول استفاده کنی یکم پیچیده میشه و واقعا اینجا تو کامنت نمیشه جواب داد. اگه راه ساده تر هم بخوای میتونی از advanced filter استفاده کنی

  54. سلام. ممنون از مطبلتون
    یه سوال. من چطوری میتونم به کمک همین کدها تاریخ میلادی رو ب شمسی تبدیل کنم. اگر کدی برای این کار موچود هست لطفا اون رو هم بذارید.

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

    1. یاسین اسماعیل پور

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

  56. سلام مجدد
    يه سوال داشتم . ميخام بدونم ميشه كاري كرد كه هر روز خودش بياد بصورت انلاين ميزان باقي مانده روز را از يك تاريخ تا تاريخ روز ديگه را محاسبه كنه و نشون بده .
    مثلا از امروز تا اخر هفته 5 روز مانده فردا تو همون سل بطور اتوماتيك بنويسه 4 روز مانده و به همين ترتيب ادامه بده
    با تشكر

    1. یاسین اسماعیل پور

      سلام
      تابع shamsi خود به خود با refresh آپدیت میشه و به طور اتوماتیک به روز میشه

    1. یاسین اسماعیل پور

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

  57. منن تمام کارهایی که گفته شده را انجام دادم ولی چجوری باید با یه کلید تاریخ شمسی جاری را ثبت کنم؟

    1. یاسین اسماعیل پور

      سلام شروین جان. برای اینکار کافیه در کد اون کلید بنویسی:
      ACTIVESHEET.CELLS(1,1)=SHAMSI()

  58. خواهشا زود جواب بدید ممنون میشم
    بابت آموزشتونم ممنون خیلی خوب بود عالی بود فقط کلیدشو هم بگید خیلی خوب میشه

  59. سلام یاسن جان . چطوری بین تاریخ شمسی را با / یا کاما از هم تفکیک کنیم

    1. یاسین اسماعیل پور

      سلام دوست عزیز
      برای اینکار به اینصورت عمل کنید. فرض کنی تاریخ در سلول A1 هست.
      =LEFT(A1;2)&”/”&MID(A1;3;2)&”/”&RIGHT(A1;2)

  60. محمد طالشی

    با توضیحاتی که راجع به saveکردن نهایی دادید در عمل موفق نشدم لطفا راهنماییم کنید؟؟؟

    1. یاسین اسماعیل پور

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

  61. ممنون از مطلب مفید و خوبت.
    من متن کد رو با استفاده از word-pad به فرمت unicode-utf8 تبدیل کردم. بعد به txt ذخیره کردم و متون توی notepad, notepad++ , wordpad, word نمایش داده می شن و خوانا هستن. توابع هم به کار خودشون عمل می کنن.
    مشکلی که الان هست اینه که توی ویرایشگر vba همچنان حروف فارسی علامت سوال ؟ نمایش داده می شه. فرقی هم نمی کنه از کدوم ویرایشگر متن کپی کنم. و در نتیجه هم اگر قرار هست توی شیت اکسل “اردیبهشت” دیده بشه، به جاش چند تا علامت سوال میاد.

    با یه مقدار جستجو می بینم مردم نوشته اند که گویا فرمتی به غیر از اسکی امکان نمایش نداره توی این ادیتور. (البته پردازش متن یونیکد ممکن هست، اما امکان نمایش مستقیم توی ادیتور نیست.) اما گویا شما این کار رو انجام دادی.
    (در لینک زیر، سوال طرف، چیز دیگری هست، اما توی جواب ها به اینی که می گم اشاره شده)
    http://stackoverflow.com/questions/7269399/declaring-a-unicode-string-in-vba-in-excel
    و توی جواب ها دو نفر اشاره کردن. از جمله این قسمت:
    Editor doesn’t display Unicode
    از ویندوز 10 و آفیس 2013 استفاده می کنم. آیا تفاوت نسخه داریم؟

  62. سلام.
    من همه کامنت ها رو خوندم.
    برای مشکلی که توی لغات فارسی وجود داره.
    من همون ابتدا که فایل رو باز میکنم هیچ کلمه فارسی توش نداره.
    فایل نوت منظورم هست. حالا همین فایل رو وقتی با utf8 هم ذخیره کنم هیچ تفاوتی ایجاد نمیکنه و کاراکترهارو به همون صورت به هم ریخته ذخیره میکنه. ممنون میشم فایل صحیح رو توی جواب کامنت بذاری. تشکر.

  63. محمد امین

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

  64. سلام
    واقعا عالی ممنونم
    فقط ی مشکلی کلافم کرده
    وقتی کارامو انجام میدم میام بیرون و دوباره وارد میشم و shamsi=رو میزنم اصلا وجود نداره انگار کد وجود نداره.
    وبعد از وارد کردن کد باید دوباره روز از نو روزی از نو.
    چندین بار امتحان کردم جوابی نمیگیرم.
    لطفا کمک کنید.

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

  66. سلام
    من میخوام توی جداولم تاریخ رو به جای 13950203 بصورت 1395/02/03 برگردونه
    چکارباید بکنم؟
    با تشکر از سایت خوبتون

  67. با تابع make_Date تاریخ رو با اسلش جدا کردم اما میخوام تابع Diff رو روش اعمال کنم نمیشه
    یعنی اختلافشون رو نشون نمیده

  68. سلام دوست عزیز
    واقعا سپاس بخاطر اینکه برای این فایل کتابخونه ای که رووش خیلی زحمت هم کشیده شده ، یک داکیومنتیشن (wiki) خیلی خوب درست کردی.
    مرسی از زحماتت

  69. سلام
    آقای اسماعیل پور بنده هر چه روی SHEET جدید میرم گزینه VIEW CODE خاموش هستش اگه میشه راهنمایی کنید چطور درست میشه؟
    از مطالب مفیدی که داخل سایت بارگذاری میشه تشکر میکنم…..

  70. سلام
    در صورتیکه سال 1394 کبیسه نیست ولی با محاسبه فرمول DIFF ما بین تاریخ 1394/01/01 الی 1394/12/29 تعداد روز 364 محاسبه میشه نمیدونم چرا . لطفاً بررسی کنید و جوابشو برام ایمیل بزنید ممنون قبلاً از سایت خوبتون و فعالیت مثبتون کمال تشکر و قدرانی را دارم .

  71. سلام دوباره این مشکل تو شمارش سه ماهه ها هم وجود دارد مثلاً 1394/01/01 لغایت 1394/03/31 با دستور ِDIFF جواب میده 92 روز در حالیکه جواب باید 93 میشد باز نیازمند کمک سبزتان هستیم :)) ممنون

  72. سلام
    ممنونم ازمطالب مفیدتون(دمت گرم)
    با تابع make_Date تاریخ رو “/” جدا کردم اما میخوام تابع Diff رو روش اعمال کنم ولی متاسفانه نمیشه
    فقط میشه
    (diff(13950101;13950102 این فرمول را وارد کرد و اختلاف روز را حساب کرد که خوندنش توی هزاران تاریخ واقعا سخته بدون”/” .
    ایا ممکن هست که تابع make_Date و Diff رو باهم ترکیب کرد؟
    باز هم سپاس فراوان بابت مطالب مفید و کاربردی.

    1. سلام
      شما میتونی با تابع SUBSTITUTE(A1,”/”,””) همه “/” ها رو جدا کنی بعد تابع Diff رو اعمال کنی
      بعد تو یه ستون دیگه با فرمول LEFT(A1,4)&”/”&MID(A1,5,2)&”/”&RIGHT(A1,2) اختلافی که با Diff محاسبه کردی دوباره بهش اسلش اضافه کنی

      1. پست قبلی خوب نیفتاد
        اسلش دار کردن تاریخ:
        LEFT(A1,4)&”/”&MID(A1,5,2)&”/”&RIGHT(A1,2)

        1. یاسین اسماعیل پور

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

  73. سلام
    یاسین جان
    من چند تا فایل اکسل داشتم ولی الان همش بهم ریخته و اومدم با نت پد باز کردم تبدیل به utf8 کردم
    و دوباره تو اکسل از تب data و from text دوباره فایلو باز کردم و با کاما اونها رو از هم جدا کردم بلکه فایلم درست شه………اما نمیشه نمیدونم مشکل تو اینکد کردن یا چیز دیگه …..هر کاری کردم بازم بهم ریخته بود
    ممنون ::)))

    1. سلام ، آقا حمید رضای عزیز
      ایشالله که هیچوقت کارت گیر نباشه!!
      من 15 ساله که دارم با اکسل کار میکنم و تا حالا سابقه نداشته که به همچین مشکلی بر بخورم !! دلایل زیادی ممکنه داشته باشه ، از ویروسی بودن کامپیوترت تا بد سکتور داشتن هارد و … !!
      خودت بهتر از همه میتونی حدس بزنی که چی عامل اون میتونه باشه
      دستکاری فایل یک نرم افزار با نرم افزارهای دیگه ، ممکنه کار رو خرابتر بکنه ، سعی کن از روشهای متعارف استفاده بکنی
      موفق باشی – خانیکی

      1. ممنون از جواب شما
        ممکنه هم بخاطر ویروس و یا بدسکتور باشه
        روش های متعارف مثل چی؟؟
        من ویروس کشی کردم و هر راه حلی که میدونستم امتحان کردم الان دیگه نمیدونم واقعا چرا فایل همه چیزش بهم ریخته فونتاش قابل خوندن نیست زبان و لوکیشن سیستم رو هم فارسی کردم ولی باز درست نشد…نت پد++ هم جواب نداد

  74. خواهش میکنم ، آقا حمید رضا
    روشهای متعارف ، یعنی روشهایی که هر نرم افزار ، مثل اکسل ، برای بازکردن ، ذخیره کردن و یا بازیابی فایلهای خودشون از قبل پیش بینی و تعریف کردند
    از دیگر مواردی که ممکنه باعث بهم ریختگی فایل بشه ، تغییر خودسرانه پسوند نام فایل و یا بازکردن فایلهای ذخیره شده با نسخه های جدید یک نرم افزار ، توسط نسخه های قبلی همان نرم افزار !!
    آیا تمامی فایلهای اکسل شما بهم ریخته شده است؟ یا فقط تعدادی از فایلهای خاص؟
    آیا از فایلهای فوق پشتیبان هم تهیه کرده بودید؟ در اینصورت ، فایلهای پشتیبان هم به هم ریخته هستند؟
    اگر تمایل دارید ، یکی از فایلهای قدیمی را که کمتر دستکاری شده است ، اما اشکال آن کماکان باقیست برای من بفرستید تا از نزدیک بررسی کنم . برای ارسال فایل از طریق ایمیل ، روی عنوان این پیام کلیک نمایید
    موفق باشید – خانیکی
    0919-302-6452

    1. مرسی از جوابتون
      من خودم فکر میکنم که از ویروس باشه البته ویروس کشی کردم درست نشد….
      یا اینکه فونت ها مشکل داشته باشه که باید با تبدیل به utf8 بوسیله نت پد ++ حل میشد….
      تمامی فایلهایی که بهم ریخته یک ویروس با چند نام داشت یکی از اونها RecoveR بود ولی باقی فایل ها که در فولدر اونها این فایل ویروس شکل نبود سالم ماندند…
      ایمیل شما معلوم نیست …. اگه امکان داره یک بار دیگه بفرستید یکی از فایل ها رو براتون بفرستم

  75. سلام ، آقا حمید رضا
    مگر شما با اکسل 97 تا 2003 کار میکنید؟!!
    فایل شما با پسوند XLS متعلق به این نسخه از اکسل می باشد!!
    از طرفی ، اکثر پسوند نام فایلها در اکسل ، معمولاً با حروف کوچک نوشته میشود ، اما پسوند فایل شما با حروف بزرگ نوشته شده است!!
    محتویات فایل نیز هیچ تناسبی با فایلهای اکسل ندارد ، گویا پسوند فایل نرم افزار دیگری را ، به پسوند اکسل تغییر نام داده اند!!
    این شیطنت ها ، میتواند کار یک ویروس یا حتی یک فرد باشد!!
    خودتان گفته بودید که ویروس فوق به پوشه های خاصی حمله میکند ، پس به راحتی میتوانید عملکرد آن را بررسی کنید
    یک یا چند فایل سالم را به عنوان طعمه در پوشه های آلوده قرار دهید و نتیجه آن را به دقت بررسی کنید
    تغییراتی که در حجم فایل ، پسوند نام فایل و محتویات فایل داده میشود را باهم مقایسه کنید
    گمان نمیکنم فایلهای از دست رفته به راحتی قابل بازیابی باشند ، فقط بایستی با روشی ، از ادامه این تهاجم پیشگیری شود
    نهایتاً تنها چاره کار ، ویروس کشی ، یا نصب مجدد ویندوز و مجموعه آفیس میتواند باشد . موفق باشید – خانیکی
    0919-302-6452

    1. مرسی از پیگیری شما…
      همون طور که گفتید فایل مربوط به اکسل 2003 به قبل هستش ولی پسوندو نمی دونم چرا حروف بزرگ ذخیره شده..!!
      درباره محتویات باید بگم که فایل اکسل بودن قبلن ولی الان که بهم ریختن اصلن قابل خوندن نیست…الان تونستم جلوی ویروسو بگیرم تا پخش نشه ولی میخام فایل های قبلی رو برگردونم چون خیلی مهم هستند….ولی انگار کاری نمیشه کرد…با تشکر از شما که وقت گذاشتین

  76. سلام فایل نوت پد من انگلیسی باز میشه اصلا روزای هفته رو نداره مثل نمونه عکسی که شما از نوت پد گذاشتین. مشکلش چیه؟؟

  77. سلام ، آقای عظیمی
    نمونه عکس بالا نوت پد نیست ، بلکه محیط ماکرونویسی در اکسل یا بعبارتی VBA است
    با کلیک راست روی نام شیت و انتخاب گزینه View Code میتونی به اونجا بری
    موفق باشی – خانیکی
    0919-302-6452

  78. سلام ، آقای حامد شرقی
    من با ماکرونویسی تابعی نوشته ام که تاریخ میلادی رو میگیره و تاریخ شمسی رو برمیگردونه
    شما برای اینکه بتونید ستونی ، دارای تاریخهای شمسی داشته باشید ، ابتدا بایستی ستونی با تاریخ میلادی ایجاد کنید و با کمک این تابع ، تاریخ شمسی متناظر اون رو بدست بیارید . در نهایت میتونید ، ستون تاریخ میلادی رو که لازم ندارید ، مخفی کنید
    یک راه دیگه اینه که ، تاریخ شمسی رو بر اساس شماره ردیف جدولتون تنظیم و محاسبه کنید!!
    برای دانلود کردن این تابع و نحوه استفاده از اون ، با کلیک کردن روی عنوان بالای این پاسخ ( آموزش ماکرونویسی در اینجا ) به وبلاگ من وارد بشید ، و به پست “دانلود نمونه های آموزشی” بروید و تابع “تبدیل تاریخ میلادی به شمسی” رو دانلود کنید
    موفق باشید – خانیکی
    0919-302-6452

  79. علی محمدی اصل

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

    1. یاسین اسماعیل پور

      سلام علی جان
      متاسفانه تابعی برای اینکار نداره علی جان

  80. اقا یاسین میشه به سوالم چندتا کامنت بالاتر نگاه بندازی؟؟؟

    1. یاسین اسماعیل پور

      سلام حمیدرضا جان. کدوم سوال؟ اون رو که آقای خانیکی جواب دادن. منظورت همونه؟

      1. اره جواب دادن ولی مشکلم حل نشد گفتم شاید شما راه حل دیگه ای بدونی

  81. سوال دیگه اینکه چطور فقط در محدوده تاریخی که ما معین کردیم میشه تاریخ وارد کرد؟
    ایا میشه از data validation استفاده کرد؟ با توجه به اینکه فقط تاریخ میلادی رو قبول میکنه

  82. سلام
    عالی بود
    ولی برای من چرا تابع mahnameوdayweek ؟؟؟؟؟؟؟؟؟؟؟ این جوری نشون میده نتیجه فرمول رو؟

    1. سلام اقا یاسین چندروزه نیست من بجاش جواب میدم
      شما زبان سیستم رو از کنترل پنل قسمت region & local –> administrative –> change system local عوض کنی بذاری روی persian درست میشه

  83. سلام
    من میخام اکسل یه ستونی رو که تاریخ های هر سطر متفاوته رو بگیره و یه ماه مونده به اون تاریخ رنگ سطرم عوض بشه میتونین کمکم کنید ،لطفا؟
    یعنی مثلا تاریخ انقضا منهای امروز بشه اگه کمتر از سی بود رنگشو عوض کنه
    تاریخ ها شمسی هم باشه

    1. سلام
      به نظرمن اول اون سطری که تاریخ توش هست رو تبدیل به ستون کن …بعد یک ستون جدید برای تاریخ روز ایجاد کن با استفاده از فرمول ()shamsi= بعد با تابع Diff اختلافشو بدست بیار و در نهایت بوسیله conditional formatting میتونی اونهایی که کمتر از سی روز مونده رنگشو عوض کنی

  84. با سلام
    چطور میشه دستور Shamsi() بطور خودکار به روز شه.یعنی هربار که فایل باز می شه تاریخ روز رو بهم اعلام کنه نه تاریخ قبل رو.

    1. سلام
      از کلیدهای ترکیبی alt+cnrl+shift+f9 استفاده کن تاریخ اپدیت میشه

  85. با تشکر از ماکرویی که دادید . یک فایل اکسلی دارم . میخواهم تاریخ وصول چکها را از تاریخ سررسید آنها کم کنم . تا بتونم روی دیرکرد مشتریان بررسی انجام بدهم . نتونستم از این ماکرو استفاده کنم . اگر ممکنه راهنمایی بفرمایید.

  86. آقا یاسین
    سلام ، من اینکارو انجام دادم و دقیقا” تاریخ رو بفارسی نشون میده اما علیرغم اینکه این فایل رو Add_Ins کردم و در اون قسمت تیک هم خورده اما در فایل جدیدی که ایجاد میکنم خونده نمیشه چرا؟ در ضمن تیک ماکرو رو هم در Add-ins فعال کردم .
    ممنون میشم راهنمائی بفرمائید .

  87. آقا یاسین
    با سلام مجدد، یکی اینکه من تا هر فایل اکسلی را که میخوام باز کنم ابتدا همین فایل ماکرو شمسی باز میشه ثانیا” امروز که همون فایل ماکرو باز شد تاریخش آپدیت نشده و مربوط به همون روزای قبلیه ، لطفا” بفرمائید مشکل کجاست !!!
    ممنونم

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

  89. اگر از تابع روز استفاده کنم جور در نمیاد چون همه ماه ها تعداد روزشون یکی نیست

  90. سلام بسیار ممنون از سایت مفیدتان.
    سوالی داشتم ممنون میشم پاسخگو باشید.
    میخواهم در سلول های یک ستون تاریخی را وارد کنم. و فرمولی بنویسم که اگر از هرکدام از آن تاریخ ها 15 روز بگذرد . ردیفی که آن سلول در آن قرار دارد رنگ متنشان یا رنگ پس زمینه تغییر کند.
    چه باید بکنم؟ خواهش میکنم راهنمایی کنید.

  91. احسان توکلی

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

  92. سلام
    جناب مهندس من همه اون کارها رو انجام دادم ولی ،Diff رو حساب نمی کنه.
    خیلی ممنون می شم راهنمایی بفرمایید

    1. شاعر الکترونیک

      سلام . با اجازه مهندس گرامی آقا یاسین
      مشکل اینه که در فرمول به جای “;” باید از “,” استفاده کنید که در راهنمایی اشتباه نوشتاری پیش اومده دوست من

  93. سلام اگه تاریخ تولد کسی رو داشته باشیم در اکسل فرمولی وجود دارد که سن اون نفر رو نشون نشون بده ؟

    1. یاسین اسماعیل پور

      سلام
      بله وجود داره همین مطلب رو مجدد با دقت مطالعه کنید توابعش رو توضیح دادم کامل

  94. salam man ba sumifs mikham tabei bnvisam k tarikhaye yek sotoono negah kone beyn tarike x ta y adade sotoone rooberoosho jam bezane

    1. یاسین اسماعیل پور

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

  95. سلام جناب اسماعیل‌پور
    ممنون از معرفی تابع بسیار کاربردی تاریخ شمسی
    من این تابع رو در یه سلول استفاده کردم
    =shamsi()

    ولی متاسفانه خودکار آپدیت نمیشه
    یعنی مثلا دیروز 13950517 بوده و امروز فایل رو باز میکنی خودکار به 13950518 تبدیل نمیشه . راهی براش هست ؟
    ریکلکیولیت و ریفرش و … رو امتحان کردم نشد.
    خودم فکر میکنم اگه به جای فرمول =shamsi() از یه فرمول که تاریخ میلادی رو به شمسی تبدیل کنه استفاده کنیم شاید راه گشا باشه
    =miladi_shamsi(today())
    ولی تابع این پست فرمول تبدیل تاریخ میلادی به شمسی رو نداشت …
    ممنون میشم برای این مساله راهنماییم کنین
    تشکر

    1. یاسین اسماعیل پور

      سلام دوست عزیز
      کافیه در کد VBA خط زیر رو به ابتدای تابع shamsi() اضافه کنی:
      Application.Volatile

      1. تشکر. این کار رو انجام دادم اما بازهم نتیجه نداد. احتمالا من به درستی انجام ندادم. میشه شما زحمتش رو بکشید و فایل ویرایش شده رو بذارید تا هم من و هم دیگران استفاده کنیم؟

  96. سلام
    با سپاس از اطلاعات مفیدتون ، من قصد دارم یک شمارنده واسه تاریخ تعریف کنم که وقتی 21 روز از تاریخ ارسال تجهیزاتم گذشت ردیف اون تجهیز رو واسم مشخص کنه . ممنون میشم راهنمایی کنید

    1. یاسین اسماعیل پور

      سلام مینا جان
      با استفاده از تابع diff و گرفتن اختلاف اون با تابع shamsi میتونید اینکار رو بکنید

  97. بسیار عااالییییی
    از شما سپاسگزارم که دانشتون رو به اشتراک میذارید
    پیروز و سربلند باشید

  98. سلام جناب آقای اسماعیل پور عزیز
    بنده از توابع ارائه شده استفاده کردم و یک DATA BASE سفارشات برای بخش تدارکاتمان آماده کردم.تو این DATA BASE تاریخ های مراحل مختلف سفارش ثبت میشه و با تابع DIFF هم زمان واقعی با زمان استاندارد برای هر فعالیت مقایسه میشه و اختلاف نشون داده میشه.متسفانه بعد از ورود اطلاعات 60 مورد سفارش(کمتر از یک ماه است که اطلاعات وارد میشه) فایل اکسل باز نمیشه.به نظر شما علت چیست؟

    ممنون میشم راهنمایی کنید.

  99. سلام یه جدول فایل اکسل که چند صفحه هست رو بخام به صورت پی دی اف یک صفحه ذخیره کنم میشه؟!

  100. جناب اسماعیل پور ممکنه به من هم کمک کنید ؟
    در خصوص بروزرسانی خودکار تاریخ شمسی موقع ورود به اکسل بود که راهش رو فرمودید اما من نتونستم عملی کنم.
    میشه زحمت درج کد رو بکشید و کد کامل رو بدید

  101. سلام
    من همه کارهایی که بالا توضیح دادیدو انجام دادم ولی همچنان نمیتونم تفاوت دوتا تاریخو بدست بیارم، وقتی به عنوان مثال مینویسم (13940114;13940107)Diff= ابتدا بجای جواب عدد صفر میگذاره و وقتی دوباره سلول و انتخاب و اینتر میکنم ?Name#. می شه لطفا راهنمایی کنید. تشکر

  102. اخه به کد نویسی تسلط ندارم
    وقتی این که گفتین رو اول شمسی اضافه میکنم ارور میده و میگه
    invalid outside procedure

  103. در واقع من میخوام وقتی کاربر فایل اکسل رو باز میکنه تاریخ به روز توی خونه مربوطه دیده بشه.
    الان در حالت عادی تاریخ آخرین سیو نشون داده میشه. مثلا اگه 1/5/95 فایل رو ذخیره کرده باشم و امروز بازش کنم تاریخ سلول همون 1/5/95 هست. باید یه بار دابل کلیک کنم روی سلول و اینتر بزنم تا تاریخ بشه 28/5/95
    اگه دقیقا و مبتدیانه بگید چیکار کنم خیلی خیلی کمک بزرگی کردید بهم . زیاد به کد نویسی تسلط ندارم .

  104. آقا واقعاً ممنون؛ اینکه رایگان مطلبی در اختیار عموم میزارید نشانه دیدگاه خالصانه و بزرگمنشانه شما عزیزانه- مطالبتون بسیار مفید بودن مچکرم

  105. سلام خسته نباشيد.
    سايتتون واقعا عاليه…
    من ميخوام دوتاريخ شمسي را از هم كم كنم به نحوي كه نتيجه تعداد ماه ها رو برگردونه. ميشه اين كارو كرد؟چطوري؟

  106. آقاي اسماعيل پورخواهش ميكنم به سوال من جواب بديد خيلي نياز دارم

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

    1. یاسین اسماعیل پور

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

  108. حمید
    سلام … تنها از فرمول ()Shamsi= به درستی عمل میکنه بقیه که میزنم این میگه #VALUE! …. علتش چیه … ؟!

  109. با سلام من طبق روشی که شما گفین پیشرفتم ولی چطوری xlsm را داخل کادر save type قرار دهیم و هر گاه از اکسل بیرون میروم و دوباره اکسل را باز میکنم و =sh رامیزنم ان را نشان نمیدهد و اجرا هم نمیکند چرا ؟؟؟؟؟ کمکم کنید ممنون

  110. رضا شریفی نیا

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

  111. سلام به شما مدیر سایت و شما خواننده ی محترم
    یکی از پر کاربردترین تابع های اکسل همین تابع تاریخ شمسی هست.
    برای راحتی کار با این توابع شما میتونید توابعی که لازم دارید رو بجای اسم انگلیسی با اسم فارسی فراخوانی کنید برای این منظور برید به ماژول1 و اسم تابع مورد نظر رو با سرچ پیدا کنید و بعد اسم تابع رو در هر جای اون تابع اومده به فارسی تغییر بدید و برای فراخوانی تابع در محیط اکسل تابع رو با حروف فارسی فراخوانی کنید!! (عملا دیگه نیازی نیست تغییر زبان بدید و انگلیسی کنید) برای من که تابع ()DAT= مورد استفاده بود dayweek که به فارسی روز هفته رو وارد میکرد برداشتم (لازم نداشتمش) و با تغییر اسم تابع و دستور داخل تابع به ()تا= خیلی کارم راحت شد.
    مرسی بابت مطالب خوبتون

  112. چرا کسی جواب منو نمیده؟؟؟؟؟؟ من طبق همین روشی که شما گفتین شمسی سازی را انجام دادم و اجرا هم شد ولی وقتی از فایل بیرون امدم و دوباره وارد فایل شدم توابع وجود داشت ولی نمیشد از انها استفاده کرد و هر وقت() SHAMSI=را میزنم صفر را نشان میدهد؟؟؟؟؟؟؟؟؟؟

  113. سلام من وقتی از تابع shamsi() استفاده میکنم روز بعد تاریخ اپدیت نمیشود چرا؟؟؟؟؟؟؟؟؟ و بعضی وقتا تابع شمسی تاریخ دیروز را به جای امروز وارد میکند چرا

  114. سلام. ممنون از مطلب عالی و مفیدتون.
    یه سوالی داشتم اینکه اگه من بخوام تعداد روزهایی که بین دو تا تاریخ که با این فرمت نوشته شده (95/05/23) و در دو سلول گذاشتم رو بدست بیارم باید از چه تابعی استفاده کنم، چون تابع DIFF رو که استفاده کردم ارور داد. لازمه فرمت تاریخ سیستم رو تغییر بدم؟ یا اینکه کلا فرمت تاریخ نویسی رو در اکسل تغییر بدم. ممنون میشم اگه جواب بدین.

  115. خیلی ممنون از شما.
    خیلی بهره بردم. خسته نباشید
    فقط کامنتهای فارسی را وقتی وارد ماژول اکسل 2013 میکنم همشون به شکل علامت سوال درمیان.

  116. سلام .ممنون از مطلب مفیدتون
    یه سوال دارم.چجور میتونم اختلاف دو سلول را که محتوای آنها تاریخ شمسیه که به صورت دستی وارد شده، حساب کنم؟

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

    1. یاسین اسماعیل پور

      سلام مریم خانوم
      بله میشه. کافیه ما با استفاده از تابع if نتیجه حاصل از تابع diff رو چک کنید و در صورتی که بیشتر از 100 بود محاسبات مدنظرتون رو انجام بدید

  118. من با تابع Diff اختلاف تاریخ امروز با یه تاریخ دیگه رو حساب میکنم.
    اما حاصل هر روز آپدیت نمیشه.مصلا اگه اختلاف دیروز عدد 10 بوده، امروز پس از گذشت 1 روز، باید اختلاف بشه 9.اما این اتفاق نمیفته
    اگه کسی میتونه کمک کنه

    1. یاسین اسماعیل پور

      سلام
      قبلا هم در این خصوص توضیح داده بودم دوست عزیز
      اگر میخواید تابع شما خودکار به روز بشه کافیه عبارت:
      Application.Volatile
      رو به ابتدای تابع Shamsi() کد خودتون (کد داخل ماژول نه فرمول) اضافه کنید. اما یادتون باشه با اینکار هر بار ک تغییری در شیتتون بدید تابع شمسی دوباره محاسبه میشه و این باعث میشه پردازش فایل شما بیشتر بشه

  119. سلام. من كل اين مراحل رو اجرا كردم وانجام شد.
    ولي در آخر وقتي =sh مي زنم و اينتر
    مي زنم…ارور #name مي ده… مشكل از كجاست؟

    1. یاسین اسماعیل پور

      سلام
      وقتی =sh میزنید نباید اینتر بزنید باید گزینه shamsi رو انتخاب کنید.

  120. سلام
    من یه فایل اکسل دارم ستون تاریخ جای ماه و روز که بینشون اسلش/ است عوض شده چطور میتونم درستش کنم.

  121. حامدمحمدی

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

  122. سلام.
    من وقتی notepad رو باز می کنم هم فارسی ها روو به زبان دیگه ایی نشون میده که قابل خوندن نیست.
    چه کنم؟

  123. سلام وقتی دستور shamsi= رو میزنم تاریخ بصورت 13950820 نشون میده و بینشون / نمی ذاره

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

  125. سلام و خسته نباشید
    آقا تابع AddDay مشکل داره نظرات دیگران رو هم خوندم چند نفر دیگر از دوستان هم مشکل داشتن. همه توابع به درستی کار می کنن ولی این تابع فقط مشکل داره و وقتی عددی رو به تاریخ مورد نظر بعد از سمیکالن اضافه می کنم ارور میده.
    لطفا راهنمایی بفرمایید
    با تشکر

  126. با سلام ، قبل از هر چیز از مطالب بسیار کاربردی سایتتون تشکر میکنم.
    یه سوال داشتم: در اکسل با کلیک راست روی نام Sheet برای انتخاب view code، این گزینه خاموشه! یعنی من اصلن نمیتونم انتخابش کنم.( قسمت ماکرو هم تو تنظیمات فعاله) مشکل از کجاست؟
    خیلی ممنون

  127. فرهاد واقف

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

  128. با سلام خدمت همه بزرگواران
    ی سوال داشتم: میخواستم تاریخ اعتبار یه سری مدارک رو در اکسل ثبت کنم و میخوام از طریق فرمول نویسی بیاد تاریخ درج شده رو با تاریخ روز مقایسه کنه و بهم آلارم بده
    میشه کمکم کنید؟؟

  129. حمید طهانی

    همه مطالب عالی بود. تشکر و خسته نباشید
    فقط مثال previouse mah اشتباه تایپی داره .
    اگر میشد اختلاف روز ماه سال رو هم به تفکیک میداد عالی میشد. یعنی دقیقا لنگ همین مطلبم.
    در ضمن اگه گروهی در تلگرام دارید ممنون میشم منم ادد کنید. 09214312663

  130. سلام خسته نباشید خیلی ممنونم از سایت عالیتون
    فقط چرا من همه مراحل رو درست طبق دستور انجام میدم ولی وقتی اکسل رو میبندم و یه فایل اکسل باز میکنم تمامی فرمول شمسی میپره ؟؟؟ صد بار هم چک کردم درست بود؟

  131. با سلام
    آيا ميشه در اكسل فرمولي بكار برد تا با وارد كردن تاريخ استخدام فردي در يك سلول آن سلول يا سلول كناري آن سالهاي گذشته خدمتي آن فرد را نشان دهد مثلا فردي در سال 1390/10/11 استخدام شده و خود اكسل به صورت خودكار در سلول كناري عدد 5 سال نمايش دهد كه اين فرد از اين تاريخ تا 1395/10/11 (5 )سال خدمت كرده است

  132. سلام
    خسته نباشید ممنون بابت مطالب آموزشی
    من یه سوال داشتم ورژن که آموزش میدید چنده چون من 2013 کار میکنم اکثر عنوانهایی که میگیدو پیدا نمیکنم ممنون

  133. سلام خدمت دوستان اگر هنوز بعضیا مشکل ؟ در VBA دارن میتونن وارد این قسمت در صفحه VBA بشن
    TOOLS<OPTION
    تب EDITOR FORMAT رو انتخاب کنید بعد تو قسمت FONT یه فنت فارسی( مثلا B NAZANIN )انتخاب کنید بعد OK حالا نوشته رو کپی کنید

  134. با سلام خدمت همه دوستان عزیزم خصوصا مدیریت محترم.
    سوالی که من داشتم در مورد کم کردن دوتاریخ از هم هستش(به صورت شمارش معکوس روز ،ساعت و دقیقه) که این عملیات را در قالب نمودارpieبه ما نشان بده.برای نشون دادن مدت زمان باقی مانده برای اتمام پروژه لازم دارم.
    اگه کسی بتونه راهنماییم کنه ممنون میشم

  135. با سلام من تمام مراحل را همان طوری که شما گفته بودین رفتم و توابع shamsi , dat . … بود ولی موقع کار کردن و استفاده#name? را نشان میده چرا؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  136. با سلام و خسته نباشید
    میشه برنامه ایی در فایل درج کرد که شماره هفته رو هم بدهد؟

  137. سلام من فایل text رو دانلود کردم ولی چون utf-8 نیست همه نوشته هاش به هم ریخته به کاراکترهای ناخوانا تبدیل شده است. میشه فایلش رو مجدد آپلود کنید و فرمت صحیح

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

  139. علی
    01.22.2017 در 4:22 ب.ظ

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

  140. سلام
    من میخوام یه تاریخ شمسی مثل 1395/02/05 با همین فرمت رو توی اکسل با یه عددی جمع کنم. مثل 7 که جواب بشه 1395/02/12 آیا امکانش هست؟ بی زحمت جوابتونو برام ایمیل کنید
    ممنونم

  141. باسلام و تشکر درمورد نشان دادن سال کبیسه فرمول بین تمامی سالها هر چهار سال یک بار در نظر میگیره بجز بین سال های ۱۳۷۱ تا ۱۳۷۵ ایا این یک خطای برنامه نویسی محسوب نمیشه

  142. باسلام من مشکل مرتب سازی تاریخ تولد دارم مثلا به جای 36/2/18باید بزنم 1336/02/18تعداد این مرتب سازی هم زیاده ضمن اینکه با اکسلم زیاد اشنا نیستم.ممنون میشم راهنمایی کنید

  143. بسیار عالی
    ممنون از شما
    فقط با توجه به اینکه توابع نمیتوانند تاریخی غیر از تاریخ جاری رو به شمسی تبدیل کنند اگر چند تغییر بدین این کار انجام میشه و فقط کافیه بنویسید
    =Shamsi(تاریخ میلادی مورد نظر)
    کدش اینه :
    ‘***********************************************
    Public Static Function Shamsi(ByVal F_Date As Long) As Long
    ‘تاريخ جاري سيستم را به تاريخ هجري شمسي تبديل مي كند
    Dim Shamsi_Mabna As Long
    Dim Miladi_mabna As Date
    ‘در اينجا 78/10/11 با 2000/01/01 معادل قرارداده شده
    Shamsi_Mabna = 13781011
    Miladi_mabna = #1/1/2000#
    Dif = DateDiff(“d”, Miladi_mabna, F_Date)
    If Dif < 0 Then
    MsgBox "تاريخ جاري سيستم شما نادرست است , آنرا اصلاح كنيد."
    Else
    Shamsi = AddDay(Shamsi_Mabna, Dif)
    End If
    End Function

  144. جهانگیر آذربان

    سلام دوستان
    دستورadddayتو اکسل من درست کار نمیکنه
    عین دستور نوشته شده رو مینویسم ولی خطا میده

  145. با عرض سلام
    چگونه میشود تاریخ شمسی را در اکسل از همدیگر کسر نمود وحاصل آن تعداد روز اعلام گرددمثلا
    دریک سلول تاریخ اعتبار گواهی تا تاریخ1396/02/31 وجود دارد که اگر از تاریخ 1395/12/30 کسر شود 62 روز اعتبار گواهی را اعلام نماید(در صورت مقدور تاریخ روز از سیستم اخذ شود وبه صورت دستی وارد نگردد)
    ممنون

  146. سلام وقتتون به خیر.
    ایا امکان هست تاریخی که به صورت ۱۳۹۵/۰۲/۱۴را به صورت ۱۳۹۵۰۲۱۴ نوشت ؟در صورت خیر. چگونه می توان دو تاریخ ۱۳۹۵/۰۱/۱۵ از تاریخ ۱۳۹۴/۱۲/۱۲ کسر کرد. ممنون می شم پاسخ بدید.

  147. سید علی هاشمی

    سلام مهندس جان
    خیلی از لطفت ممنون
    فایل را با نوت پد باز کردم و تمام نوشته ها و توابع را در module کپی کردم و پنجره هارا بستم و با xlsmآنرا save as کردم و فایل اکسل را باز کردم و توابه مثلا shamsi= را تایپ کردم علامت name را نشان میدهد
    ممنون میشم راهنمائی فرمائید

  148. سلام
    من میخوام امار شرکتم رو اکسل وارد کنم وقتی میزنم به طور مثال 95/1/1 تبدیل میشه به1995/1/1 من میخوام تبدیل بشه به 1395/1/1 لطفا راهنمایی کنید با تشکر

  149. مهدی شریف

    سلام
    یک فایل اکسل که تاریخ های شمسی داخلش هست رو وقتی می خوام اختلاف دو تاریخ رو بدست بیارم داخل سلولی که باید اختلاف دو تاریخ باشه #value! رو نشون میده ، و وقتی همون تاریخ رو روی سلول خودش تایپ میکنم درست میشه و جواب میده .

    ضمن اینکه وقتی روی سلول تاریخ های موجود کلیلک میکنم رد سمت راست نوار فرمول نشون میده و وقتی تایپ میکنم میاد سمت چپ .
    ممنون میشم کمک کنید .

  150. با تشکر لطفا نحوه محاسبه تفاضل تاریخ 1394/01/12 و 1395/08/30 چگونه بدست میآید.
    از سایت خوبتون سپاسگذارم.

  151. با سلام
    اگه بخواهیم بگیم که هر تاریخی که این ردیف یا این سلول پر شد رو در ی سلول دیگه به ما نشون بده چیکار باید بکنیم
    با تشکر از سایت و مطالب بسیار بسیار مفید

  152. نجمه آشتیانی

    سلام
    من به شدت به این مورد احتیاج دارم و همه ی مراحلی که گفتید رو انجام دادم ولی تابع شمسی رو بهم نشون نمیده 🙁
    چی کار کتم؟

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

    لطفا راهنمایی کنید

  154. ممنون ، مشکلم حل شد ، قسمت format cells مشکل داشت ، باید روی حالت text میبود.

  155. سلام و وقت بخیر
    بابت توضیحات بی نهایت سپاسگزاریم از شما… خیلی کامل بود.
    یه سوال::: وقتی تبدیل انجام میشود بین تاریخ ها اسلش نمیاد چطوری میشه اینو اضافه کرد؟؟؟؟؟
    و یه خواهش از شما دارم که بگید برای هر بار استفاده از ماکرو برای موارد مختلف این فایل ها را چه گونه سرج کنیم … یعنی با چه نامی…
    به عبارت دیگر من همیشه در کار با ماکرو مشکل دارم چرا که فایل را ندارم
    نمیدونم متوجه سوالم شدید یا نه؟؟؟؟؟؟؟؟؟
    امکان داره مثال های دیگری را زده و فایل های دیگری را قرار دهید؟؟؟
    سپاس

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

    لطفا راهنماییم کنید.office2010

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

  158. سلام، وقت بخیر
    منم مثل خیلی از دوستان این مشکل رو دارم که وقتی از فایل اکسلم خارج میشم توابع کار نمیکنن.بعد که میرم تو قسمت ماژول 1 میبینم کدهایی که کپی کردم سرجاشون وجود دارند ولی وقتی مینویسم ()sh= تابع رونمیاره.به همون روش که فرمودید ذخیره کردم فایل اکسلمو.
    چیکار کنم.البته متن فارسی توابع هم در notepad و wordpad یه جور عجیب غریبه

  159. سلام خیلی خوب بود فقط میشه بین روز ماه سال علامتی گذاشت مثلا / ممنون

  160. مریم سلیمانی

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

  161. سلام.من مشکلی که دارم وقتی مثلا میزنم 28/12/1396
    و اونو اتو فیل میکنم میشه 29/12/96 بعد30/12/96 بعد31/12/96 بعد32/12/96 همینطور الی اخر تشخیص نمیده که وارد ماه و سال بعدی شدیم که بشه1/1/97 البته در تاریخ میلادی این مشکل نیست ممنون میشم کمک کنید.

  162. سلام
    من تاریخ رو به صورت 96/09/20 در سلول (h3) وارد اکسل 2010 میکنم بعد مثلا تاریخ 96/09/1 در سلول (i3) رو وارد میکنم بعد مثلا فرمول =h3-i3 رو میزنم ولی ارور میده و اختلاف دو تاریخ رو بهم نمیده باید تاریخ رو به شکل 960920 وارد کنم تا اختلاف رو بهم بده راه حلی هست که اختلاف رو با تاریخ اسلش (/)دار بهم بده

  163. سلام
    خیلی عالی بود.فقط من یک فایل vba با excel 2010 نوشتم .ولی وقتی اون فایل را در سیستم دیگه ای با excel 2016کپی میکنم در Function Shamsi بع عبارت date در Dif = DateDiff(“d”, Miladi_mabna, Date) ارور میگیره .لطفا راهنماییم کنید.

  164. وحید هادی

    سلام
    خسته نباشین
    از یک تاریخ شمسی چند ماه رو چگونه کم کنیم ؟

    1. یاسین اسماعیل پور

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

  165. سلام. با تشکر و عرض پوزش؛ پیشنهاد می گردد در این ماژول، قسمت «ماه قبل» را به شرح ذیل اصلاح کنید تا تاریخ به صورت کامل و صحیح به یک ماه قبل برگردد:
    ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
    Function PreviousMah(ByVal F_Date As Long) As Long
    If (F_Date Mod 10000) = 1 Then
    PreviousMah = (Int(F_Date / 10000) – 1) * 10000 + 12
    Else
    PreviousMah = F_Date – 100
    End If
    End Function
    __________________________________________
    همچنین من برای خودم فرمول های «فصل قبل» و «سال قبل» را نیز به شرح زیر به ماژول اضافه کردم:
    __________
    Function PreviousFasl(ByVal F_Date As Long) As Long
    ‘اين تابع سه ماه از تاريخ موردنظر کم ميکند
    If (F_Date Mod 10000) = 1 Then
    PreviousFasl = (Int(F_Date / 10000) – 3) * 10000 + 12
    Else
    PreviousFasl = F_Date – 300
    End If
    End Function
    ________________________
    Function PreviousSal(ByVal F_Date As Long) As Long
    ‘اين تابع يک سال از تاريخ موردنظر کم ميکند
    PreviousSal = (F_Date – 10000)
    End Function

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

  167. مجتبی رضایی

    سلام .
    من با استفاده از تابع m2s(today()) در یک سلول تاریخ روز گذاشتم.ولی هر وقت سند باز میکنم تاریخ صدور ببینم تاریخ تغییر میکنه به تاریخ روز و نمی دونم درج صدور فاکتور چه روزی بوده.
    لطفا راهنمایی بفرمایید.

  168. سلام
    آقای یاسین اسماعیل پور فایل متنی به اشتباه با ANSI واسه بار اول ذخیره شده که کلمات را درست نشون نمیده .

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

  170. محمد رضا

    سلام به شما استاد بزرگوار که بی چشم داشت مطالب ناب را در اختیار دانشجویان قرار می دهید ، خدا قوت .

    استاد پیشنهادی که داشتم در صورت امکان آموزش ماژول تاریخ شمسی و این که اصلا چه جوری پیاده سازی شده است را آموزش بفرمایید . حتی اگر مبلغی را هم بفرمایید واقعا منت گذاشته اید بر دانشجویان.

    متشکرم

  171. سلام وقت بخیر
    من از ابتدا فکر کنم مشکل دارم
    میخوام برم داخل view code که برم وارد تنظیمات بشم این دکمه برام غیر فعاله!!
    امکانش هست دلیلش رو بگید لطفا؟؟؟

  172. سلام من فایلی دارم که تاریخ ها از فروردین به اسفند مرتب شده ولی من میخوام از اسفند به فروردین مرتب بشه، چیکار باید بکنم؟

      1. سلام بسیار ممنون از اموزشتون
        من وقتی فایل رو ذخیره میکنم برای اولین اجرا درست جواب میده
        ولی وقتی فایل روز دیگه باز میشه تاریخ بروز نمیشه و تاریخ گذشته رو نشون میده

  173. سلام
    تاریخ های شمسی در یکی از فایل های Excel به جای راست به چپ بودن چپ به راست هست تعداد موارد هم خیلی بالاست و سورت کردن تاریخ ها رو با مشکل مواجه میکنه و بر اساس روز سورت میکنه به جای این که بر اساس سال سورت کنه. چگونه این تاریخ رو میشه با یه دستور چپ به راست کرد.
    ممنون

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

    4000 نفره به صورت زیر
    53 سال و 2 ماه و 3 روز
    به تولد شمسی تبدیل شود
    لطفا ایمیل کنید

  175. سلام دوست عزیز
    با تشکر تابع AddDay را اجرا نمی کند لطفا راهنمایی کنید

    1. یاسین اسماعیل پور

      سلام سینا جان. فقط مشکلتون با تابع addDay هست یا بقیه توابع هم کار نمیکنند؟

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

    1. سلامت باشین
      اگه شما در فرمول تون مستقیما” و یا غیر مستقیم از تابع Today استفاده کرده باشید ، قطعا” با این مشکل مواجه میشید
      برای حل این مشکل دوتا راه حل وجود داره :
      اول : خودتون بصورت دستی تاریخ رو در سلول مربوطه تایپ کنید
      دوم : ماکرویی نوشته بشه که بصورت خودکار ، کار فوق رو انجام بده
      موفق باشین

  177. سلام جناب آقای اسماعیل پور عزیز
    ضمن تشکر از برنامه کاریردی ارائه شده .علیرغم اینکه فایل برنامه را با پسوند
    (Excel Macro-Enabled Workbook (*.xlsm ذخیره کرده ام . برنامه فقط در صفحه اولیه کاربرد داره وبا بستن اون .برنامه در صفحات جدید قابل استفاده نیست [توضیحا در اکسل 2010 مورد استفاده من در باکس انتخاب پسوند فقط Excel Macro-Enabled Workbook قید شده و(*.xlsm) موجود نمیباشد].
    لطفا راهنمائی فرمایید
    با تشکر

    1. با سلام بر سرکار خانم توسلی
      جناب اسماعیل پور خیلی زحمت میکشن ، لطف شون به همه زیاده و وقت شون کم !
      اگر توابع بالا توی یکی از شیت ها کار میکنه ، پس خیالتون راحت باشه که فرمت فایل تون درسته
      فقط تنها اشتباهی که کردید ، بجای اینکه ماژول جدید ایجاد کنید و برنامه رو داخل اون کپی کنید ، در قسمت مربوط به فقط یک شیت کپی کرده اید !
      اگر بازم مشکل تون حل نشد ، فایل تون رو برام بفرستید تا بررسیش کنم
      موفق باشید – خانیکی
      ( با کلیک بر روی نام کاملم در بالا میتونید به من دسترسی داشته باشید )

    1. باسلام و تشکر
      اگه شماره هفته رو هم در فرمول اضافه کنید خیلی عالی میشه مثلن تاریخ ۱۳۹۹۰۵۰۶ رو بدیم خروجی بده ۱۹ یعنی هفته نوزدهم سال .

  178. عباس معتمدی

    با سلام و عرض ادب و احترام
    تشکر میکنم از محبتی که فرمودید و اطلاعات خوبی رو عرضه کردید.
    من در اکسل فایلی رو دارم که در اون جدولی با تاریخ هایی به فاصله یکماه قرار گرفته . چگونه میتوانم سلولهایی که مربوط به تاریخ است رو از میلادی به شمسی تبدیل کنم مثلا تاریخ 1399/5/25 به 1999/5/25 تبدیل نشه و همینطور پشت سر هم تاریخها به شمسی باشه یعنی سال 1400 ؛ 1400 باشه نه 2000 . همینطور که میدانید ماههای میلادی هم از لحاظ تعداد روز و هم از جایگیری در فصلها متفاوت هست . ممنون میشم اگر یاری فرمایید .
    فایلی که اشاره کردم مربوط به یک قرض الحسنه ساده در جمع محلی ، و هیئتی است. حتماً اجر اخروی نیز دارد.

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

    1. سلام آقا هادی
      شما می توانید با کلیک بر روی نام کامل من در بالا ، به وبلاگ من بروید
      اولین فایلی که برای دانلود گذاشتم “توابع کاربردی تاریخ شمسی در اکسل” هست
      که این توابع رو با ماکرونویسی در اکسل ایجاد کرده ام
      و شما می تونید به راحتی به ماکروی نوشته شده دسترسی داشته باشید و ازش الگو بگیرید
      و برای استفاده از اون توابع ، اون ماکرو رو در فایل های اکسل خودتون کپی کنید
      موفق باشید – خانیکی

  180. با سلام و تشکر
    لطفا تاریخ هایی که بصورت 99/05/02 هستند و عد 13 در ابتدای سال ندارند را هم کاش در فرمت برنامه تان داشتید که فرمول های آنها را هم بتوانیم استفاده کنیم

  181. سلام خسته نباشید
    خیلی از این توابع ارور value میدن میشه راهنمایی کنید باید چیکار کنم
    من فقط از دو تابع Shamsi وdat تونستم استفاده کنم که داخل تابع datهم مجور شدم روز هفته رو حذف کنم چون نمایش نمیداد و به جاش “؟”میذاشت
    ممنون

  182. با سلام و عرض خسته نباشید بابت آموزش های قشنگتون.
    من یه فایل رو با اکسل 2007 شمسی ساز رو طبق آموزش شما گذاشتم و قبل از save as توی منوی کشویی می آورد اما به محض اینکه روی منوی مدنظر شما save as کردم یه پیام error به من داد و فایل رو بدون شمس ساز به من تحویل داد. پیام error رو هم پایین براتون مینویسم ممنون میشم مشکل منو حل بفرمایید.
    privacy warning: this document contains macros activex controls xml expansion pack in for mation or web components

    1. سلام آقا محسن
      چون اون فایل دارای ماکرونویسی بوده
      و اگه اون فایل ناشناخته و غیر ایمن باشه
      این احتمال وجود داره که بتونه برای سیستم تون مشکل ایجاد کنه
      جهت اطمینان از امنیت اون فایل ، به شما اخطار میده
      و اگه شما ایمن بودن اون رو تایید نکنین ، ماکرو رو حذف میکنه
      که احتمالا” شما اون رو تایید نکردین و حذف شده
      دوباره فایل رو Save Az کنید ، اما ایمن بودنش رو تایید کنین تا مشکل تون حل بشه
      اگه بازم مشکلی داشتین ، روی نام کاملم در بالا کلیک کنین
      موفق باشین – خانیکی

  183. سلام و وقت بخیر :
    ممنون بابت اطلاعات مفیدتون من یه فایل تاریخ داشتم که یا استفاده ار کد نویسی شما بین تاریخ ها / انداختم ولی الان نمیتونم تاریخ شمسی رو به میلادی تبدیل کنم لطفا راهکار ارائه فرمایید

    1. سلام به شما
      یک سری هم به وبلاگ بنده بزنید
      در آنجا فایلی را برای دانلود گذاشته ام که شامل “توابع کاربردی تاریخ شمسی” است
      که این توابع با ماکرو نویسی تهیه شده اند
      از این ماکرو نیز می توانید در برنامه های خودتان استفاده کنید
      امیدوارم که برایتان مفید باشد
      در صورت بروز مشکل یا پرسش و ابهامی با کلیک روی نام کامل من در بالا ، با من تماس بگیرید
      موفق باشید – خانیکی

  184. سلام
    محوه وارد کردن این تابع به افیس 2016 رو هم میشه توضیح بدید
    این قسمت رو (((با انتخاب این گزینه پنجره Visual Basic for Applications باز میشه که از اون میتونیم برای کدنویسی VBA در اکسل استفاده کنیم. در اینجا میتونیم کدهای مربوط به کار با تاریخ شمسی در اکسل رو به فایل اکسل خودمون اضافه کنیم.

    برای اینکار ابتدا مثل تصویر زیر از منوی Insert گزینه Module رو انتخاب کنید.))) نمیتونم پیدا کنم که کد رو وارد کنم
    ممنون

    1. سلام محمد جان
      روی نام شیت مثلا” Sheet1 کلیک راست کن
      بعدش از منوی باز شده گزینه ی View Code رو انتخاب کن
      بایستی محیط VBA برات باز بشه
      و بتونی ادامه مراحل رو انجام بدی
      بازم اگه به مشکلی خوردی ، با من تماس بگیر تا راهنماییت کنم
      موفق باشی – خانیکی

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

  186. صبغت الله کریمی

    سلام واحترامات!
    ماه فعلی را چگونه پیداکنیم که ماه فعلی چی ماه است.

  187. رضا نقوی

    سلام
    من میخوام برای هر خانه یک تاریخ اختصاص بدم که وقتی بیش از دو روز به اون تاریخ مونده متن تاریخ اون خانه سبز نشون بده ، از دو روز تا تاریخ ثبت شده زرد و وقتی از اون تاریخ گذشت، متن تاریخ رو قرمز نشون بده.
    میشه راهنماییم کنید ممنون میشم.

  188. سلام من اقیس2010 دارم
    الان مراحل نصب رو انجام دادم فقط روی فایل اکسلی که ماکرو هست کار میکنه روی هیچ اکسل دیگه ای کار نمیکنه چکارکنم

    1. یاسین اسماعیل پور

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

  189. سلام وقت بخیر مهندس
    آیا در محاسبات افزونه سال های کبیسه لحاظ میشه؟!
    تشکر از زحمات شما

  190. سلام وقت بخیر
    من میخواستم مثلا 2 ماه و 13 روز را به تاریه 01/02/1399 اضافه کنم لطفا راهنمایی بفرمایید فرمولش در اکسل چیست؟

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top