我的數據表:Excel的VBA或公式:XIRR的多帳戶多年
我的輸入是由多個賬戶的投資數據爲多年的左表。我想爲每個帳戶計算每年的XIRR。
權利表是我想要的典型輸出。但是,我無法弄清楚如何在Excel Formula的幫助下完成這項工作。或通過VBA。誰能幫忙?
實施例:
#1不允許圖像被上傳由於不具有像10或東西的聲譽。
我的數據表:Excel的VBA或公式:XIRR的多帳戶多年
我的輸入是由多個賬戶的投資數據爲多年的左表。我想爲每個帳戶計算每年的XIRR。
權利表是我想要的典型輸出。但是,我無法弄清楚如何在Excel Formula的幫助下完成這項工作。或通過VBA。誰能幫忙?
實施例:
#1不允許圖像被上傳由於不具有像10或東西的聲譽。
以下是一種方法。這種方法要求數據按帳戶和年份分類。該策略是(1)爲每個Acc#+ YEAR組合找到正確的第一行數據; (2)從該行提取數據到表的末尾; (3)過濾掉與該Acc#+ YEAR不相關的數據;和(4)計算XIRR。
要確定每個帳戶/年份組合的第一行數據,您可以通過將兩者連接在一起來製作唯一標籤。使用此公式(CTRL-SHIFT-ENTER)
:我由具有第一行的輔助表
=MATCH($F5&"_"&G$4,Account&"_"&Year,0)
其中$ F5是將細胞與加#,G $ 4是一個帶有YEAR ##的單元格,Account是帳戶名稱的列,Year是多年的列。我用下劃線來劃分帳戶名稱和年份;如果您的帳戶名稱和年份不會相互衝突,您可以跳過此步驟。
現在可以計算XIRR。這裏的結果:
這裏的公式(再次CTRL-SHIFT-ENTER):
=XIRR(IF(OFFSET($A$2,G5,0,23-G5+1,1)=$K5,IF(OFFSET($B$2,G5,0,23-G5+1,1)=L$4,OFFSET($D$2,G5,0,23-G5+1,1),0),0),OFFSET($C$2,G5,0,23-G5+1,1))
我用OFFSET
提取子陣列是開始於 「第一行」 (如上計算)並結束於數據表的底部。 (注意,這些子陣仍包含來自多個帳戶/年的數據,所以我們會在後面的步驟篩選)。在OFFSET($A$2,G5,0,23-G5+1,1)
$A$2
高於帳戶名稱的細胞;G5
行(G5
是輔助表中的第一行之一);0
列;23-G5+1
行(23行應該換成你所有的行);和1
列數據。其他OFFSET
的工作原理相同,列B(年),C(日期)和D(金額)除外。
下一步是從錯誤的Acc#或YEAR中過濾掉不需要的數據。這是使用兩個嵌套的IF
語句完成的。其基本邏輯是,與0
取代Amount
每當我們有錯加#或年份:
=XIRR(IF(Account=TheAcct,IF(YEAR=TheYear,Amount,0),0),Date)
這工作,因爲零現金流不影響XIRR計算。
除了篩選步驟,您還可以計算每個Acc + YEAR的最後一行。然後你會得到一個像這樣的公式:
=XIRR(OFFSET(Amount,FirstRow,0,LastRow-FirstRow+1,0),OFFSET(Date,FirstRow,0,LastRow-FirstRow+1,0))
希望有幫助。