EOMONTH Функция Flakey (Microsoft Excel)
Джо довольно часто использует функцию EOMONTH, но с тех пор, как он перешел на Excel 2007, у него возникли проблемы. У Джо активен пакет инструментов анализа, и функция EOMONTH сначала работает. Однако, когда он сохраняет свою книгу и открывает ее позже, ячейки, содержащие функцию EOMONTH, выглядят нормально, пока вы не нажмете на них. Затем в строке формул отображается # N / A. Формула исчезла. В этом случае пакет инструментов анализа все еще активен. Это случается не во всех случаях, но игнорировать его слишком часто. Кроме того, у Джо есть коллега, который испытывает ту же проблему с его рабочими тетрадями.
Эта проблема с EOMONTH, по-видимому, возникает из-за изменений, внесенных в функцию EOMONTH в более поздних версиях Excel (Excel 2007 и более поздних версиях).
В более ранних версиях Excel (Excel 2003 и ранее) EOMONTH входил в состав пакета Analysis ToolPak. В более поздних версиях Excel ToolPak больше не требуется; функция является частью самого Excel. Другими словами, вам не нужно активировать Analysis ToolPak, чтобы использовать EOMONTH.
Это приводит к проблеме. Если у вас есть книга, созданная в более ранней версии Excel, и вы открываете ее в режиме совместимости в более поздней версии Excel, формулы книги оцениваются и при некоторых обстоятельствах обновляются внутренние «токены», используемые для функций.
Когда книга сохраняется и возвращается из нее, обновленный маркер сохраняется в книге, а при перезагрузке книги маркер теперь указывает на то, что Excel интерпретирует как недопустимую функцию.
Microsoft еще ничего не опубликовала в своей базе знаний об этой ошибке. Проблема кажется прерывистой (как отметил Джо), затрагивая книгу только после того, как она прошла от четырех до восьми циклов открытия / редактирования / сохранения.
Решение — открыть книгу и, если проблема не проявляется, использовать «Сохранить как», чтобы сохранить книгу в собственном формате Excel.
(Ну, в формате Excel, родном для Excel 2007 и более поздних версий Excel.) Поскольку с этого момента режим совместимости не используется, проблема не должна возникать снова. Если проблема проявляется, вам нужно будет исправить и перестроить книгу.
Если у вас нет возможности сохранить книгу в текущем собственном формате Excel (возможно, вам нужно использовать более старый формат Excel, чтобы работать с другими пользователями, которые не обновляли свою программу), вам следует подумать о том, чтобы не полагаться на функцию 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")
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (6613) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.