EOMONTH関数はFlakey(Microsoft Excel)です
JoeはEOMONTH関数を頻繁に使用しますが、Excel 2007に移行してから、問題が発生しました。 JoeはAnalysisToolPakをアクティブにしており、最初はEOMONTH関数が機能します。ただし、ワークブックを保存して後で開くと、クリックするまでEOMONTH関数を含むセルは正常に表示されます。次に、数式バーに#N / Aが表示されます。数式が消えました。これが発生しても、AnalysisToolPakは引き続きアクティブです。これはすべての場合に発生するわけではありませんが、無視できないほど頻繁に発生します。また、ジョーには、ワークブックで同じ問題が発生している同僚がいます。
EOMONTHに関するこの問題は、Excelの新しいバージョン(Excel 2007以降)でEOMONTH関数に変更が加えられたために発生したようです。
以前のバージョンのExcel(Excel 2003以前)では、EOMONTHはAnalysisToolPakの一部でした。それ以降のバージョンのExcelでは、ToolPakは不要になりました。この関数はExcel自体の一部です。つまり、EOMONTHを使用するためにAnalysisToolPakをアクティブにする必要はありません。
これは問題につながります。以前のバージョンのExcelで作成されたブックがあり、それ以降のバージョンのExcelで互換モードを使用して開いた場合、ブックの数式が評価され、状況によっては、関数に使用される内部の「トークン」が更新されます。
ブックが保存されて元に戻されると、更新されたトークンがブックに保存され、ブックが再ロードされると、トークンはExcelが無効な関数として解釈するものを指すようになります。
マイクロソフトは、現時点では、このエラーについてナレッジベースに何も投稿していません。この問題は断続的であるように思われ(Joeが指摘したように)、4〜8回のオープン/編集/保存サイクルを経た後にのみワークブックに影響を及ぼします。
解決策は、ブックを開き、問題が明らかにならない場合は、[名前を付けて保存]を使用してブックをネイティブExcel形式で保存することです。
(まあ、Excel 2007からそれ以降のバージョンのExcelまでのExcel形式でネイティブです。)それ以降は互換モードが含まれないため、問題が再発することはありません。問題が明らかになった場合は、ブックを修正して再構築する必要があります。
ブックをExcelの現在のネイティブ形式で保存できない場合(プログラムを更新していない他のユーザーと作業するには、古いExcel形式を使用する必要がある可能性があります)、EOMONTH関数に依存しないことを検討する必要があります。 。代わりに、次のいずれかの式を使用してください。
=A1+31-DAY(A1+31) =DATE(YEAR(A1),MONTH(A1)+1,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に日付10/15/18が含まれているとすると、次の両方で同じ結果が返されます。
=LastOfMonth(B7) =LastOfMonth("10/15/2018")
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(6613)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。