Excel の PMT 関数は、年率、期間の合計数、元の額面価格、および債券の終値に基づいて毎月の支払いを行います。
毎月の支払いを計算するための数式は次のとおりです。
M=[OF(i(1+i)^n)]/[(1+i)^(n-1)]
M=Monthly payment
OF=Original Face
i=annual interest rate/12
n=number of periods
(i=.08/12, n=10, OF=10000) を入力として毎月の支払いを計算するには、次を使用しました。
if object_id('dbo.PMT') > 0
drop function dbo.PMT
go
create function dbo.PMT(@rate numeric(15,9), @periods smallint, @principal numeric(20,2) )
returns numeric (38,9)
as
begin
declare @pmt numeric (38,9)
select @pmt = @principal
/ (power(1+@rate,@periods)-1)
* (@rate*power(1+@rate,@periods))
return @pmt
end
go
次に、私が使用したフォーラムに基づいて、データ型を修正します。
drop function dbo.PMT
go
create function dbo.PMT
(
@rate float,
@periods smallint,
@principal numeric(20,2)
)
returns numeric (38,9)
as
begin
declare @pmt numeric (38,9)
declare @WK_periods float,
@WK_principal float,
@wk_One float,
@WK_power float
select @WK_periods = @periods,
@WK_principal = @principal,
@WK_One = 1
select @pmt =
round(
( @WK_principal * (@rate*power(@WK_One+@rate,@WK_periods)))
/ (power(@WK_One+@rate,@WK_periods)-@WK_One)
,9)
return @pmt
end
go
declare @rate float
select @rate = .0800000000000/12.000000000000000000
select PMT = dbo.PMT( @rate, 10 , 10000 )
PMT
これにより、正確で正しい答えが返されました。ただし、これらの定数 (i=.08/12、n=10 など) を入力として使用する代わりに、値の列を使用できるようにする方法はありますか? 約 10000 の債券があり、すべて異なる期間、レート、および元の面があり、それらの列に基づいて毎月の支払いを計算する必要があります。理想的には、各債券の毎月の支払いを表示する列を追加することです。どんな助けでも信じられないほど素晴らしいでしょう、ありがとう!