• ベストアンサー

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

noname#191254
noname#191254

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

  • ベストアンサー
  • 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/7940)
回答No.3

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

noname#191254
質問者

お礼

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

  • asciiz
  • ベストアンサー率70% (6643/9411)
回答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

  • エクセルの条件付き書式のコピーの方法

    先ほど、https://okwave.jp/qa/q9548414.htmlにて質問し、 msMikeさんのご回答で解決できたのですが、 その設定した条件式設定が、ドラッグでコピーできません。 セルE1に、msMikeさんに教えていただいた「=AND($F3<>"",$F3<TODAY())」を設定しました。 それで希望通りに、A1とB1とC1とD1とE1が緑になりました。 そして、それ以降の列にも適用しようと思い、 E1のセルの右下の角にポインターを当てて、矢印を十字にして、 そのままE2、E3、E4・・・とドラッグしていったのですが、 例えばE3に過ぎた日付を入力しても、E3のセルだけが緑になるだけでした。 ドラッグしていけば、てっきり数式の中のセルの数値や適用先のセルの数値も 変わると思っていたのですが・・・。 どうやれば、E2、E3、E4・・・に適用することができるのでしょうか。

  • 【Excel】日付以外で隣りのセルに別の言葉を表示

    以前、入力した日付に応じて別のセルに本日とか明日と表示させたいと質問したものです。 色んな方のお知恵をお借りして、下記のように入力することで解決致しました。 =IFERROR(IF(AND(A1<>"",E3<TODAY()),"期限切",IF(AND(A1-TODAY()>2,E3-TODAY()<8),"今週",IF(A1-TODAY()>7,"予定",CHOOSE(A1-TODAY()+1,"本日","明日","明後日")))),"") 詳細はこちらで→ https://okwave.jp/qa/q10194294.html そこで更に質問です。 今現在は、A1のセルに日付を入力するとB1のセルに本日とか明日とか出るようにしているのですが 今までのものに加えて、日付以外の文言(例えば「終了」とか)を入れた場合に、「完」と表示させることは可能でしょうか。 可能であればやり方を教えてください。A1セルと同じ言葉をB1に表示させるでも良いです。 それか、日付でなければなにか文言が入るとかでも良いです。 日付以外の文言は1種類(終了)だけを想定していますが、複数種入れられるのであればそのやり方も教えて頂けると助かります。 要はA1セルに入力する内容によって、下のように表示できるようにしたいということです。 A1セル B1セル 2023年11月4日 期限切 2023年11月6日 今日 2023年11月7日 明日 2023年11月8日 明後日 2023年11月10日 今週 2023年11月18日 予定 終了 完 よろしくお願いします。

  • IF(B1="","",A1*B1)の合計

    セルC1に次の計算式が入っています。 IF(B1="","",A1*B1) 行9までコピーされています。 C10のセルで SUM(C1:C9) で合計したいと思っています。 B列に空白がある場合、 #VALUE!のエラーとなります。 IF(B1="","",A1*B1) の計算式を残したままで 解決方法はありませんか?

  • if(A=B,"",B)の式の効率的な組み方

    エクセル2010を使っている者です。 =if(A=B,"",B)という趣旨の式を立てたいのですが、式のわかりやすさ、長さを考えたときに、Aはセル番号なので問題ないのですが、Bが長文の関数式なので、「=if(A=B,"",B)」とするとBの式を2度書くことになり、非常に長文でわかりづらくなってしまいます。 どなたか、効率的に短く書く方法があれば、ご教授ください。

  • エクセルでIF関数について教えていただきたいです

    よろしくお願いします。 A1セルに「5/20」と入力してあり、これは日付を意味します。 A1セルには上記の形式で日付が入力されるとして C1セルに「A1が5月だったらB1を参照」というIF関数を設定したいのですが、わかりません 教えていTだきたいです。 なんとなく =IF(A1="5#",B1,"")かな、と思ったのですが違うようでした。

  • エクセル2000です。IF関数の使い方で質問です。セルA5とセルD5に

    エクセル2000です。IF関数の使い方で質問です。セルA5とセルD5に日付が入っているとしてセルA5の日付がセルD5の日付より大きい(先の日付)の場合はセルA5の日付から本日迄の日数で利息を計算しそうでなければD5の日付からの日数で利息を計算したい場合どのような計算式になるでしょうか?具体的に考えた数式は以下の通りですがエラーがでます。 =ROUNDDOWN(DATEDIF(IF(A5>D5,A5,$F$2,D5,$F$2,"D")*C3*0.01/365,0) セルF2には本日の日付=TODAY()でセルC3には貸し付けた元金がはいってます。 よろしくお願いします。利息は端数を切り捨てたいのでROUNDDOWNを使いました。

  • Excelで日付を挿入

    このセルを入力した日付を、こっちのセルに自動で入れる方法を教えて下さい。 入力日なので、TODAY() では上手くいきません。 セルが入力されて居ないときは、空白にしたくて、=IF(A1="","",TODAY()) なんて事もしてみたのですが、現在の日付で入力日ではないので上手くいきません(当たり前ですが…) 多分No.101と同じ質問だと思うのですが、何せ初心者なので意味が判りません。 もう少し判り易く教えていただけるとありがたいです。お願いします。

  • 日付の表示方法の違いで認識しない?(条件付き書式)

    いつもお世話になっております。 以前書きの質問をさせて頂きました。 http://okwave.jp/qa/q6417367.html http://okwave.jp/qa/q6418699.html 皆さんの回答のおかげで、とても勉強になり・助かりありがとうございます。 まだまだ勉強不足で申し訳ないのですが、もうひとつだけお教えください。 現在の帳簿の納入日は、手入力で 2010.12.04 といった形で入力しています。 これを条件付き書式で、あるセルに同じように 2010.12.05 と入力すると、日付を認識しセルの納期を過ぎればセルの色が変わるように設定出来ました。 しかし、毎日手入力で日付を更新するのは手間になるので、 =TODAY() という関数を使うと日付が 2011/1/3と表示されるようになり、表示形式の違いか日付を認識してくれません。 これは日付が、”.”で区切られているのと、”/”で区切られている違いでしょうか。 今入力しているデータはすべて”.”区切りで入力しているためこれをすべて”/”に 修正することはかなり厳しいです。 =TODAY() 関数の表示を”.”にして認識できないのでしょうか。 分かりにくく申し訳ないのですが、この日付の問題がクリアー出来れば 納期管理がかなりやりやすくなります。 皆さんのお知恵を拝借してばかりで申し訳ありませんが、 どうかアドバイスを頂ければとても助かります。 どうかよろしくお願い致します。

  • IF関数のネスト

    IF関数のネストについての質問です。 例えば、D1のセルに日付が入力してあり、 A4のセルの日付の月がD1の月と同じならば、 「今月」違うなら「エラー」と表示させたいのですが、 数式は解るのです。↓ =IF(MONTH($D$1)=MONTH(A4),"今月","エラー") ですが入力のしかたが解らないのです。 まず、fxの関数の挿入からIFを選択、論理式の部分に、 fxの左にある下矢印からMONTHを選択、 シリアル値はD1を絶対参照。 このあとがどうしていいのか解らないのです。 どなたか教えてください。 宜しくお願いします。

  • IF(B1="","",A1*B1)の合計

    セルC1に次の計算式が入っています。 IF(B1="","",A1*B1) 行10までコピーされています。 列Cを =C2+C4+C6+C8+C10 のうように個別に加算したいと思っています。 B列に空白がある場合、 #VALUE!のエラーとなります。 IF(B1="","",A1*B1) の計算式を残したままで 解決方法はありませんか?

専門家に質問してみよう