• ベストアンサー

ExcelのIF関数について質問です

 ある作業が、4月14日から4週間(28日後)の5月12日に再び実施されて、以降は定期的に4週間(28日)毎に実施されます。 =IF(OR($C$6="5月12日",$C$6="6月9日"),"○","")  該当する月日を入れてみましたが、C6セルに同じ月日が有っても「○」と判定されません。  またこの方法では、該当す月日を予め入力していかなければならないので、もっと効率の良い方法が有りましたら、ご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6852/9748)
回答No.3

IF関数の前に、Excel上での日付の扱いを理解しましょう。 「2012年4月14日」とは、数値の「41013」なのです。 これは何かというと、「1900年1月1日」=1 として、そこから何番目の日付か、ということを表しています。 日付を全て数値として扱うことにより、10日前とか100日後とか言うことが、算術演算で扱えるようになっているのです。 試しに、セルに「41013」という数値を入力してみてください。 そして、セルを右クリックした書式設定から、「日付」を選んでみてください。 サンプルとして「2012/4/14」が表示され、さらに平成日付を選んで[OK]すれば、「平成24年4月14日」という表示に変わります。 -- さて、それが理解できたなら、28日後というのは単純な話です。 「=if($C$6 = DATEVALUE("2012/4/14")+28, "○", "")」 このように書くと、4/14から28日後の5/12となったとき、○が表示されます。 また、毎28日ごとというならば、「4月14日」からの『経過日数』を『28で割った余りが0』の時、と計算できますから、 「=if(mod($C$6-DATEVALUE("2012/4/14"), 28)=0, "○", "")」 これひとつで、何回目の28日後であっても判定できます。 -- なお、文字列から日付値に変換するDATEVALUE 関数の引数は、Excelが解釈できればどのように書いても構いません。 DATEVALUE("2012/4/14") DATEVALUE("4月14日") ※2012年中のみ、41013 DATEVALUE("平成24年04月14日") DATEVALUE("H24.4.14") どの書き方でも、41013 という数値を表します。

reoleus
質問者

お礼

 日付(シリアル値)の概念とDATEVALUEの利用法について、大変勉強なりました。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

=IF(MOD(C6,28)=21,"○","") だけでいいです。 #もし勉強したいなら: 4月14日などの日付を例えばA1セルに記入し、 =MOD(A1,28) とだけ計算式を記入、数式を記入したセルにツールバーのカンマボタンを押してから、改めてA1セルにいろんな日付を記入して、何が計算されるか確認してみると参考になります。

reoleus
質問者

お礼

アドバイスありがとうございました! 早速試してみます!

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

こんにちは! お示しの数式で、5月12日・6月9日はダブルクォーテーションで囲ってありますので、 文字列扱いとなります。 そして、数式に 5月12日と入れたとしてもExcel的にはエラーになるはずです。 5月12日をシリアル値として数式に入れればご希望通りになるはずです。 今年の場合として・・・ =IF(OR($C$6="2012/5/12"*1,$C$6="2012/6/9"*1),"○","") といった感じでしょうかね! >4月14日から4週間(28日後)の5月12日に再び実施されて、以降は定期的に4週間(28日)毎・・・ とありますので 5月12日・6月9日に限定せず =IF(MOD($C$6-DATE(2012,4,14),28)=0,"○","") という数式でもOKだと思います。 参考になりますかね?m(__)m

reoleus
質問者

お礼

 大変参考になりました。  日付の表記方法が適切ではなかったのですね。

  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.2

例えば、元になる日付 4/12の日付がをA6に入っているとします。 これをC7に入っている日にちが4/12から28日ごとにあたる日を求めたいのであれば 以下のような式にしてください。 =IF(MOD($C6-$A$6,28)=0,"○","") この式を入れておけば 式を縦にコピーしても大丈夫です。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

表示上「5月12日」となっていても実際に入っているのは日付のシリアル値です。 ご提示の式はシリアル値と「5月12日」「6月9日」と言う文字列を比較しているので一致したとは判断されません。 2012/5/12から28日周期という事でしたら↓こんな感じでどうでしょう。 =IF(MOD(C6-DATEVALUE("2012/5/12"), 28)=0,"○","")

関連するQ&A