[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『誕生日から現在までの間に特定日を何度迎えたかカウントする方法』(ハッチ)
誕生日:2010/8/1
現在日:2017/6/22
特定日:7/1
とした場合、
誕生日から現在日までの間に何度特定日を迎えたのか?
答え:6回
を自動カウントする方法(関数)はありますか?
現在までの経過年月は、DATEDIF関数で求められるのですが、
カウントする方法がわかりません。
よろしくお願い致します。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
誕生日がA1セル、現在日がA2セル、特定日がA3セルとする。
=SUMPRODUCT((TEXT(ROW(INDIRECT(A1&":"&A2)),"md")=SUBSTITUTE(TEXT(A3,"md"),"/",""))*1) ではどうか。 (ねむねむ) 2017/06/22(木) 09:28
早速の回答、ありがとうございます。
関数初心者のため、関数の説明を頂けると助かります。
よろしくお願い致します。
(ハッチ) 2017/06/22(木) 09:46
こちらの都合でコマ切れになってしまうが。
まず ROW(INDIRECT(A1&":"&A2)) で誕生日(A1セルの日付)から現在日(A2セルの日付)までの日付を作り出す。 TEXT(ROW(INDIRECT(A1&":"&A2)),"md") でその日付の月と日だけを81、82、…621、622の形にする。
(ねむねむ) 2017/06/22(木) 09:52
次に TEXT(A3,"md") で特定日を71の形にするが、ここで2/29だった場合には当年がうるう年でない場合、単なる文字列になるので2/29のままになる。 そのため SUBSTITUTE(TEXT(A3,"md"),"/","") で/をなくして文字列の2/29を229の形にする。
(ねむねむ) 2017/06/22(木) 09:55
TEXT(ROW(INDIRECT(A1&":"&A2)),"md")=SUBSTITUTE(TEXT(A3,"md"),"/","") で、変換した文字列同士を比較し結果の配列を求める。 ただし、そのままでは比較の結果は論理値(True(真)、False(偽))のため*1と1をかけることでTrueを1、Falseを0に変換している。 最後に数値に変換した結果をSUMPRODUCT関数で合計している。 (ねむねむ) 2017/06/22(木) 10:02
分かりやすい説明、ありがとうございます。
うるう年まで考慮した数式だったのですね。
とても参考になりました。ありがとうございました。
(ハッチ) 2017/06/22(木) 10:14
すまない、 =SUMPRODUCT((TEXT(ROW(INDIRECT(A1&":"&A2)),"m/d")=TEXT(A3,"m/d"))*1) とすればSUBSTITUTE関数は必要なかった。 (ねむねむ) 2017/06/22(木) 10:18
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.