• ベストアンサー

B1: =IF(A1="","",IF(YEAR(

A1に、today()で今日の日付(5/13)を入力して、 B1セルには次の式を入力して右横方向にドラッグコピーします。 =IF(A1="","",IF(YEAR(A1+1)=YEAR(A1),A1+1,"")) =IF(YEAR(A1+1)=YEAR(A1),A1+1,"")との違いは何でしょうか? よろしくお願いいたします。 http://okwave.jp/qa/q8084264.html

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

=IF(A1="","",IF(YEAR(A1+1)=YEAR(A1),A1+1,"")) ・・・・・・(1) =IF(YEAR(A1+1)=YEAR(A1),A1+1,"")・・・・・・・(2) 分かり易いようにA1セルに2013/12/25と入力してB1セルに(2)式を入力して右横方向にドラッグコピーしてみましょう。 H1セルは次の年の2014/1/1となるべきところがG1セルの2013/12/31と比べて年が変わるので空白のセルになりますね。ところがその右のセルのI1セルには#VALUEの表示がされ、その表示がさらに右のセルにも続きますね。 なぜ#VALUEが表示されるのでしょう。 I1セルの数式は=IF(YEAR(H1+1)=YEAR(H1),H1+1,"")になっていますが、その場合にYEAR(H1+1)を計算しようとしてもH1セルが数式の入った空白となっているためにエラーとなってしまうのです。おなじ空白でも数式が入っている場合にはエラーとなって、数式が無い完全に空のセルになっている場合でしたらH1セルの値は0と判断されYEAR(0+1)=YEAR(1)でシリアル値では1、日付の表示では1900/1/1となります。実際にはH1セルには数式が有りますのでエラー表示となって、右横のセルはすべてエラー表示になります。 (1)の式はその問題を解消することができます。 (1)の式ではH1セルの式は=IF(G1="","",IF(YEAR(G1+1)=YEAR(G1),G1+1,""))でG1セルには2013/12/31となっていますがIF(YEAR(G1+1)=YEAR(G1),G1+1,"")の式で年が変わることから空白のセルとなっています。 I1セルではどうでしょう。=IF(H1="","",IF(YEAR(H1+1)=YEAR(H1),H1+1,""))の式となっており、H1セルが空白の場合になるのですからI1セルは空白となります。つまり、IF(H1="","",の部分が式の初めの部分にあることでYEAR(H1+1)が計算されることなく空白となるのです。(1)式においてはH1セルから右横のセルはすべて空白となります。(2)式の場合のようにエラー表示とはなりません。

noname#191254
質問者

お礼

感動しました! 大変分かりやすいご回答ありがとうございます。

その他の回答 (3)

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

あなたの数式を365日分並べてみれば、結果は一目瞭然です。 12月31日の次の次からずらっとエラーが並びますから、実際に手を動かしてやってみると良いでしょう。

noname#191254
質問者

お礼

ご回答ありがとうございます。

  • asciiz
  • ベストアンサー率70% (6809/9681)
回答No.2

求めたい数値は、前者も後者も変わりません。 ただ、後者の式は、A1が空白だと計算エラーになり、見苦しい表示になってしまいます。 ( YEAR("") や YEAR(""+1) がパラメータ不正となり、エラー値が返る。) そこでもう一段IFを重ね、「空白ならば、計算せずに空白を表示する」というようにしたのが、前者の式ということになります。

noname#191254
質問者

お礼

ご回答ありがとうございます。 A1に、today()を入力しているので、 最初のifは必ずfalse(空白でない)になると考えています。

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.1

「=IF(YEAR(A1+1)=YEAR(A1),A1+1,"")との違いは何でしょうか?」  A1が空白の時は、IF文を実行しない。

noname#191254
質問者

お礼

ご回答ありがとうございます。 A1に、today()を入力しているので、 最初のifは必ずfalse(空白でない)になると考えています。

関連するQ&A

専門家に質問してみよう