0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelで閏日を数える数式

Posted at

用途

  • 残存期間が1年以上(償還日が受渡日の1年応当日以降)である債券の残存年数の算出
    ※残存期間が1年以上である債券の残存年数=閏日を除く残存日数(片端)÷365

Excelでの数式

前提

次のとおり日付が入力されているものとする。

  • A1セル:受渡日
  • B1セル:償還日
    ※A1<B1

閏日の日数を得る数式

次のとおり数式を設定すれば、両日付の間の閏日の数を得られる。

=SUMPRODUCT((DAY(DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29))=29)*1,(A1+1<=DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29))*1,(DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29)<B1+1)*1)

閏日を除く残存日数(片端)を得る数式

次のとおり数式を設定すれば、両日付の間の日数(片端)であって、閏日を除く日数を得られる。

=B1-A1-SUMPRODUCT((DAY(DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29))=29)*1,(A1+1<=DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29))*1,(DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29)<B1+1)*1)

残存期間が1年以上であるか1年未満であるかに応じて残存日数(片端)を得る数式

IF関数及びEDATE関数を組み合わせて

=IF(B1>=EDATE(A1,12),B1-A1-SUMPRODUCT((DAY(DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29))=29)*1,(A1+1<=DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29))*1,(DATE(ROW(INDIRECT(CONCAT(YEAR(A1),":",YEAR(B1)))),2,29)<B1+1)*1),B1-A1)

とする。残存年数を得るには365で除すればよい。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?