- ベストアンサー
Excel2007でのIF関数と日付データ認識について
- Excel2007において、IF関数を使用して日付データを認識する方法についてのアドバイスをお願いします。
- 質問の内容は、Excel2007のIF関数を使用して日付データを認識する際に、論理部分の記号が誤っていることにより正しい結果が得られないというものです。
- Vlookup関数の計算は正常に機能しており、日付の認識に問題があるため、特別なルールや設定が必要なのかを教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
3/31/2004 が、3÷31÷2004と認識されているので、 1900年1月0日0時0分4秒以前を真、以降を偽で結果を返しているのだと思います。 =IF($D4<=DATE(2004,3,31),VLOOKUP($C4,Sheet3!$E$2:$G$26,2,FALSE),VLOOKUP($C4,Sheet3!$E$27:$G$51,2,FALSE)) とするといかがでしょうか?
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
その様な場合には、日付の部分を「""」で囲った上で、 VALUE関数の中に組み込むか、 或いは、 1を掛けるか、0を足す事で、計算式の中に組み込む といった方法で、日付部分は文字列ではなく、数値(シリアル値)である事を、Excelに認識させます。 $D4<=VALUE("2004/3/31") $D4<="2004/3/31"*1 $D4<="2004/3/31"+0 又、Excelのシリアル値では、1899/12/31を0とした、経過日数で日数や時刻のデータを扱い、時刻は1日の何分の1の日数が経過したかで表します。 例えば、1901/1/1 AM 3:00は、1899/12/31 AM0:00から、「367と24分の3」日が経過していますから、Excelでのデータ上は、1901/1/1 AM 3:00は数値の367.125として扱われています。 このため、例えば"2004年3月31日午前0時00分01秒"は、「38077と86400分の1」日という事になり、"2004年3月31日"(=38077日)と等しい値とは見做されず、"2004年3月3日"よりも大きな値と見做されます。 ですから、2004/3/31 23:59:59.9999・・・・・までを、2004/3/31とイコールの日付と見做して、その日以前であるか否かを判定させたい場合には、D4の値が2004/3/31ではなく、「2004/3/31の翌日である2004/4/1」よりも小さいか否かで、判定させた方が良い訳です。 従って、御質問の様な場合には、次の様にされると良いと思います。 =VLOOKUP($C4,IF($D4<"2004/3/31"+1,Sheet3!$E$2:$G$26,Sheet3!$E$27:$G$51),2,FALSE)
お礼
ご回答頂きありがとうございました。 問題が解決されました。 VLOOKUPの中にIF関数を含む式の参考になりました。 詳しいご説明、ありがとうございます。作業が落ち着きましたら詳細を拝読したく思います。
- mu2011
- ベストアンサー率38% (1910/4994)
簡単ならば、以下の方法ですがは如何でしょうか。 =IF($D4<=”2004/3/31"*1,~
お礼
ご回答頂きありがとうございました。 問題が解決されました。
お礼
早速にご回答頂きありがとうございました。 問題が解決されました。 「3/31/2004 が、3÷31÷2004と認識されている」という解説がわかり易くスッキリしました。