است
جو اغلب از تابع EOMONTH استفاده می کند، اما از زمانی که به اکسل 2007 منتقل شد، با مشکلاتی روبرو شد. Joe دارای Analysis ToolPak فعال است و تابع EOMONTH در ابتدا کار می کند. با این حال، هنگامی که او کتاب کار خود را ذخیره می کند و بعداً آن را باز می کند، سلول های حاوی تابع EOMONTH تا زمانی که روی آنها کلیک نکنید خوب به نظر می رسند. سپس نوار فرمول #N/A را نشان می دهد. فرمول ناپدید شده است. وقتی این اتفاق میافتد، Analysis ToolPak همچنان فعال است. این در هر موقعیتی اتفاق نمی افتد، اما بسیار مکرر است که نمی توان آن را نادیده گرفت. همچنین، جو یک همکار دارد که همین مشکل را با کتاب های کاری خود تجربه می کند.
این مشکل با EOMONTH ظاهراً به دلیل تغییرات ایجاد شده در عملکرد EOMONTH در نسخههای بعدی اکسل (Excel 2007 و جدیدتر) رخ میدهد. در نسخه های قبلی اکسل (Excel 2003 و قبل از آن) EOMONTH بخشی از Analysis ToolPak بود. در نسخه های بعدی اکسل، ToolPak دیگر مورد نیاز نیست. تابع بخشی از خود اکسل است. به عبارت دیگر، برای استفاده از EOMONTH نیازی به فعال کردن Analysis ToolPak ندارید.
این منجر به مشکل می شود. اگر یک کتاب کار ایجاد شده در نسخه قبلی اکسل دارید و آن را با استفاده از حالت سازگاری در نسخه بعدی اکسل باز می کنید، فرمول های کتاب کار ارزیابی می شوند و تحت برخی شرایط، "توکن های" داخلی مورد استفاده برای توابع به روز می شوند. هنگامی که کتاب کار ذخیره می شود و از آن خارج می شود، نشانه به روز شده در کتاب کار ذخیره می شود و هنگامی که کتاب کار مجدداً بارگیری می شود، نشانه اکنون به چیزی اشاره می کند که اکسل به عنوان یک تابع نامعتبر تفسیر می کند.
مایکروسافت تاکنون چیزی در پایگاه دانش خود درباره این خطا پست نکرده است. به نظر می رسد این مشکل متناوب است (همانطور که جو اشاره کرد) و تنها پس از گذراندن بین چهار تا هشت چرخه باز/ویرایش/ذخیره بر یک کتاب کار تأثیر می گذارد.
راه حل این است که کتاب کار را باز کنید و اگر مشکل آشکار نشد، از Save As استفاده کنید تا کتاب کار را در فرمت Excel ذخیره کنید. (خب، در قالب اکسل بومی اکسل 2007 تا نسخه های بعدی اکسل.) از آنجایی که حالت سازگاری از آن نقطه به بعد درگیر نیست، مشکل نباید دوباره رخ دهد. اگر مشکل آشکار شد، باید کتاب کار را اصلاح و بازسازی کنید.
اگر برای شما امکان پذیر نیست که کتاب کار را با فرمت فعلی اکسل ذخیره کنید (شاید باید از قالب قدیمی اکسل استفاده کنید تا با دیگرانی که برنامه خود را به روز نکرده اند کار کنید)، پس باید در نظر داشته باشید که به تابع EOMONTH تکیه نکنید. . در عوض، از فرمولی مانند یکی از موارد زیر استفاده کنید:
=A1+31-DAY(A1+31)
=DATE(YEAR(A1),MONTH(A1)+1,1)-1
اگر ترجیح می دهید، می توانید تابع تعریف شده توسط کاربر خود را برای محاسبه آخرین روز یک ماه ایجاد کنید. یکی از رویکردهای زیر است:
Function LastOfMonth(Any_Date As Date) As Date
Returns the date of the last day of
the month of the passed date argument
LastOfMonth = DateAdd("d", -1, _
DateAdd("m", 1, Month(Any_Date) _
& "/1/" & Year(Any_Date)))
End Function
شما باید مطمئن شوید که تابع را به یک تاریخ معتبر منتقل می کنید، یا با ارجاع به تاریخ در یک سلول یا با قرار دادن تاریخ تحت اللفظی در داخل علامت نقل قول. با فرض اینکه سلول B7 حاوی تاریخ 15/10/18 باشد، هر دو مورد زیر نتیجه یکسانی را نشان خواهند داد:
=LastOfMonth(B7)
=LastOfMonth("10/15/2018")