我有兩張桌子。第一個包含特定天數的指示性條件利率(列標題)
日期 | 1天 | 7天 | 14天 | 30天 | 90天 |
---|---|---|---|---|---|
2021年1月11日 | 4.36 | 4.36 | 4.30 | 4.49 | 4.64 |
2021年1月12日 | 4.32 | 4.34 | 4.36 | 4.48 | 4.63 |
2021年1月13日 | 4.25 | 4.32 | 4.34 | 4.43 | 4.60 |
2021年1月14日 | 4.26 | 4.35 | 4.35 | 4.36 | 4.58 |
2021年1月15日 | 4.33 | 4.35 | 4.37 | 4.34 | 4.57 |
第二個表是我需要計算給定天數的實際匯率
日期 | 天 | 速度 |
---|---|---|
2021年1月12日 | 21 | ? |
2021年1月13日 | 74 | ? |
2021年1月15日 | 40 | ? |
如您所見,某些日期給出的是條件利率,而其他日期則給出實際利率。除其他事項外,每天都會給出有條件的匯率,而僅在其中某些情況下給出實際匯率。我該如何計算這個比率?例如,我在這裡看到線性插值的使用 - 如果實際天數為 21,則給出 14 天的最接近的條件利率,我需要在未來幾天外推該值。我讀過有關 的內容=forecast
,但它沒有滿足我的需要。 Excel 中是否有函數可以幫助我執行此操作,或者我需要為此編寫 VBA 腳本?
答案1
辦公室365:
=FORECAST.LINEAR(B7,
INDEX(B2:F2,MATCH(B7,$B$1:$F$1,1)):INDEX(B2:F2,MATCH(B7,$B$1:$F$1,1)+1),
INDEX($B$1:$F$1,MATCH(B7,$B$1:$F$1,1)):INDEX($B$1:$F$1,MATCH(B7,$B$1:$F$1,1)+1))
令人驚訝的是,線性內插法在 Excel 中很難做到。
這用到了Excel的預測功能=FORECAST(x,known_y's,known_x's)
。
和選出=INDEX
與和=MATCH
相關的兩點。known_y's
known_x's
這適用於 Excel 2007,但=FORECAST.LINEAR
必須變更為=FORECAST
(即將棄用)。
答案2
我們需要獲得天數在設定點之間的比率,並將該比率乘以上限值和下限值之間的差值,然後將下限值加到該結果中。
必須執行的一步是將標題更改為實際數字。
在OFFICE 365我們可以使用LET來簡化步驟:
=LET(head,$B$1:$F$1,
lkp,B7,
rng,$B$2:$F$4,
dt,$A$2:$A$4,
rw,INDEX(rng,MATCH(A7,dt,0),0),
mtch,MATCH(lkp,head),
mtchp1,mtch+1,
fst,INDEX(head,,mtch),
scd,INDEX(head,,mtchp1),
fct,(lkp-fst)/(scd-fst),
vlue1,INDEX(rw,,mtch),
vlue2,INDEX(rw,,mtchp1),
(vlue2-vlue1)*fct+vlue1)
沒有讓:
=(INDEX(INDEX($B$2:$F$4,MATCH(A7, $A$2:$A$4,0),0),, MATCH(B7, $B$1:$F$1)+1)- INDEX(INDEX($B$2:$F$4,MATCH(A7, $A$2:$A$4,0),0),, MATCH(B7, $B$1:$F$1)))* ((B7- INDEX($B$1:$F$1,, MATCH(B7, $B$1:$F$1)))/( INDEX($B$1:$F$1,, MATCH(B7, $B$1:$F$1)+1)- INDEX($B$1:$F$1,, MATCH(B7, $B$1:$F$1))))+ INDEX(INDEX($B$2:$F$4,MATCH(A7, $A$2:$A$4,0),0),, MATCH(B7, $B$1:$F$1))
正如您所看到的,它變得非常笨重且難以管理。
LET 的另一種方法是在獲取開始和結束 x 和 y 後使用 FORECAST.LINEAR 而不是數學來獲得答案:
=LET(head,$B$1:$F$1,
lkp,B7,
rng,$B$2:$F$4,
dt,$A$2:$A$4,
rw,INDEX(rng,MATCH(A7,dt,0),0),
mtch,MATCH(lkp,head),
mtchp1,mtch+1,
fst,INDEX(head,,mtch),
scd,INDEX(head,,mtchp1),
vlue1,INDEX(rw,,mtch),
vlue2,INDEX(rw,,mtchp1),
FORECAST.LINEAR(lkp,CHOOSE({1,2},vlue1,vlue2),CHOOSE({1,2},fst,scd)))