私は2つの表を持っています。最初の表には、特定の日数(列見出し)の参考条件付き利率が含まれています。
日付 | 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 |
そして、与えられた日数に対する実質レートを計算する2番目の表
日付 | 日々 | レート |
---|---|---|
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
関連する 2 つの点を選択します。known_y's
known_x's
これは Excel 2007 でも動作しますが、(まもなく廃止予定)=FORECAST.LINEAR
に変更する必要があります。=FORECAST
答え2
設定点間の日数の比率を取得し、その比率を上限値と下限値の差に掛けて、その結果に下限値を加算する必要があります。
実行する必要がある 1 つの手順は、ヘッダーを実際の数値に変更することです。
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)
letなし:
=(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 を取得した後、math の代わりに 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)))