2017-02-01 5 views
0

私はVBAを使用してプロジェクトを実行してXIRR計算を完了しようとしています。コードの一部は次のとおりです。Excel WorksheetFunction.XIRRとXIRRが同じ入力から異なる回答を返しました

Range("J3").Value = WorksheetFunction.IRR(IRRValues()) Range("J2").Value = Application.WorksheetFunction.Xirr(IRRValues(), RepayDates())

IRRValues()クライアントが行うとRepayDates()は、すべて返済の対応する日付を含む配列であるすべての返済を含む配列です。

IRRValuesは、最初のキャッシュアウトとして負の数で始まります。しかし、VBA WorksheetFunction.XIRRを実行するたびに、その数値は事実上0になりました。しかし、ワークシートで同じデータを=XIRRで実行した場合、別の答えが返されました。 WorksheetFunction.IRRはうまくいきます。私は自分のローカル設定を "US"に変更しようとしましたので、日付の形式は正確です(mm/dd/yyyy)。

データは次のようなもので、2012年6月19日までデータは$ 87.35の一定の返済で実行されます。

-4000 2009年7月7日

$ 87.35 2009年7月21日

ありがとう!

+1

この機能は私の仕事です - ExcelとVBAの両方で0.466079を返します。 (うまくいけば、それは正しい数字です - 少なくともそれは一貫しています) 'IRRValues'と' RepayDates'が両方とも正しく設定されていることを確認しましたか?たぶんあなたのコードのコピーが作成されているかどうかと、あなたがチェックするために使っているExcelの数式を質問に貼り付けることができます。 – YowE3K

+0

@ YowE3K、はい、それは答えです。 'IRRValues'と' RepayDates'は正しく設定されています。なぜなら私はそれらのデータをワークシートに書き込んでXIRRを計算しようとしていたからです。私は今日試して、何が間違っているか見てみましょう。 – yatsky

+0

ちょうどあなたが値をExcelに書き込むことができたので、それはそこで働いていました**そうではありません**それは配列で正しいことを意味します - それは配列として実行されている翻訳が移入されていることが正しく配列はExcelに書き戻されます。 – YowE3K

答えて

0

問題が解決しました。 私は配列がインデックス1から始まると考えましたが、実際には0から始まります!

関連する問題