• 締切済み

エクセルでの期間計算(月末数でカウント)

エクセルで月数をカウントしたいのですが、 月末に在籍した場合はカウント、 月末に居ない場合はカウントしない、 と言う形で月数を求める良い方法はありますか? 例) 初        末       結果 4月1日    4月10日    0 4月1日    4月30日    1 4月1日    5月10日    1 4月1日    5月25日    1 4月1日    6月1日     2 4月10日   4月25日    0 4月10日   5月5日     1 4月10日   5月25日    1 4月10日   6月1日     2 このようなイメージですが、良い方法はありますでしょうか?

みんなの回答

noname#204879
noname#204879
回答No.5

C2: =DATEDIF(EOMONTH(A2,-1)+1,B2,"m")

end47
質問者

お礼

素早いご回答、ありがとうございました。 試したみたのですが、どうやらDATEIF関数にはバグがあり、うまくいかない場合がでてしまいました。 一番シンプルではあったのですが・・・またお願いします。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! あまり良い方法とは言えないかもしれませんが・・・ ↓の画像で説明させていただくと とりあえず今年度の月末の表を作っておきます。 E2セルに =EOMONTH(DATE(2009,4,1),ROW(A1)-1) として、下へコピーし来年の3月までの月末を表示させておきます。 そして、C2セルに =IF(COUNTBLANK(A2:B2)>0,"",SUMPRODUCT(($E$2:$E$13>=A2)*($E$2:$E$13<=B2))) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 尚、当方使用のExcel2003以前のバージョンでは EOMONTH関数を使っていますので、 メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 以上、かなり手間がかかってしまう方法ですが、 他に良い方法があれば読み流してくださいね。m(__)m

end47
質問者

お礼

素早いご回答、ありがとうございました。 他の回答と比較しながら使用してみます。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

初がA列、末がB列とする。ちょっと長くなるが、 =IF(B2=EOMONTH(B2,0),DATEDIF(EOMONTH(A2,0),EOMONTH(B2,0),"M")+1,DATEDIF(EOMONTH(A2,0),EOMONTH(B2,0),"M")) これだと年をまたがっても大丈夫だと思うが。

end47
質問者

お礼

素早いご回答、ありがとうございました。 他の回答と比較しながら使用してみます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

こういう発想はいかがでしょうか。 末は1日足して月末は翌月にしてしまう。 後は月の差と年の差の12倍 発がA列、末がB列とした場合 =(YEAR(B2+1)-YEAR(A2))*12+MONTH(B2+1)-MONTH(A2) こんな式になります。

end47
質問者

お礼

素早いご回答、ありがとうございました。 他の回答と比較しながら使用してみます。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

まず、"末" から "初" の月(MONTH)を除算すれば、良いことが 分かります。  ただし、 "末" が月末日の場合のみ、 さらに 1を加える。  たとえば、今月の月末日は、次のようにして求められます。  =DATE(YEAR(TODAY()),MONTH(TODAY())+1,0) したがって、 =IF(B2=DATE(YEAR(A2),MONTH(B2)+1,0),MONTH(B2)-MONTH(A2)+1,MONTH(B2)-MONTH(A2)) "末"  が A列、  "初" が B列と仮定

end47
質問者

お礼

すばやい回答、ありがとうございました。