- 締切済み
EXCELで日付を比べ3か月以内のデータを調べたい
契約日と契約解除日があり、三か月以内に契約を解除したデータに「1」と表示させる式を教えて頂けないでしょうか。 B列(契約開始日) D列(契約消滅日) E列(三か月以内のデータ表示列) 2 2009/12/01 2010/03/02 3 2010/01/01 2010/03/24 1 4 2010/03/01 2010/03/29 1 5 2009/12/02 2010/04/10 6 2009/12/01 2010/03/28 7 2010/01/01 2010/04/26 8 2010/02/01 2010/04/27 1 調べながら次のような式を作成したのですがなかなかうまくいきません。 =IF(DATEDIF(B2,D2,"M")<=3,"1","") 上記の式を使用した場合、本来であれば3ヶ月以内のデータのみチェックされるはずが 3ヶ月+α(残りの日付)までカウントしてチェックする為、正しくデータを抽出できない状況です。 (例) 上記表 (B5,D5) 、(B6,D6)、 (B7,D7) は、三か月以上のデータですが何故か「1」とチェックが入ってしまいます。 丸投げのようで申し訳ございませんが、お知恵をお借りしたくよろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- kmetu
- ベストアンサー率41% (562/1346)
=IF(EDATE(B2,3)>C2,1,"") でいかがでしょう 利用するためには[分析ツール]アドインの組み込みが必要です。 分析ツールを組み込んでおけば EOMONTH なんかも使えて便利になりますよ
- imogasi
- ベストアンサー率27% (4737/17069)
3か月を90人かではなくて、DATEDIF関数でMを(月に満たない日数は切捨て)で3未満であれば1を返すで、科mん単では。これは実際の暦の上の勘定で、2つの日付について計算すると思う。 IF関数部の比較で等号を入れなければ、0か月、1ヶ月+α、2ヶ月、2ヶ月+α、が条件を満たすことになるのでは。 私の勘違いかな。 DATE[DIF関数でMを指定したら返る値は1,2なら3ヶ月未満なのではないですか ーー 3ヶ月丁度を条件を満たす、に入れたいなら 2つの別の式で Mの式で3、 MD(Mで切り捨てられた日数)の式で0 の場合は条件を満たす式という式を作れば良いのでは。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていますので、余計なお世話かもしれませんが、 一例です。 E2セルに =IF(C2<=EDATE(B2,3),1,"") (エラー処理はしていません) という数式を入れ、オートフィルで下へコピーではどうでしょうか? 尚、EDATE関数を使用するに当たり当方使用のExcel2003以前のバージョンでは メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 参考になれば良いのですが・・・m(__)m
- bin-chan
- ベストアンサー率33% (1403/4213)
#1です。間違ってました。すみません。 =IF(DATEDIF(B2,D2,"M")<=3,if(day(B2)<day(d2),"1",""),"") は誤ってます。 列Eでの評価の前に、列Fに式[=IF(DATEDIF(B2,D2,"M")]を設定してみてはどうでしょう。 12を越えた値が得られることを期待してますので試験用に 2009/02/01 2010/03/01 も設けてみてください。
- keithin
- ベストアンサー率66% (5278/7941)
とりあえずDATEDIF(日付,日付,"M")は,「丸三ヶ月を過ぎていて,丸4ヶ月は過ぎていません(3月プラスα日はあるかもしれないし無いかもしれない)」を計算する関数です。 従って例えば10/1/1~10/4/10のDATEDIF(,,"M")は3なので,「<=3」で判定してしまうと1になります。 ところでご質問で「ジャスト3ヶ月」(例:10/1/1~10/4/1)が1なのか1じゃなくて良いのか不明瞭ですが,仮にこれは1だとすると =IF(DATEDIF(B2,D2-1,"M")<3,1,"") のようにします。
- bin-chan
- ベストアンサー率33% (1403/4213)
[三か月以内]の定義がはっきりしてないのでは? 2010年12月29日~31日に契約して、2011年2月28日に解除したらどうします? =IF(DATEDIF(B2,D2,"M")<=3,if(day(B2)<day(d2),"1",""),"") では?