• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Excel】日付以外で隣りのセルに別の言葉を表示)

Excelで日付入力に応じた文言表示

このQ&Aのポイント
  • Excelで特定の日付に基づき、隣接するセルに異なる文言を表示する方法を解説。
  • 日付や文言の入力に応じて、完了表示や期限切れの管理が簡単にできる。
  • ユーザーからの質問を通じて、日付以外の条件を設定する方法についても提案されている。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

日付以外を入力した場合(数値も日付と認識されます) =IFERROR(IF(ISERROR(VALUE(A1)),"完",IF(AND(A1<>"",E3<TODAY()),"期限切",IF(AND(A1-TODAY()>2,E3-TODAY()<8),"今週",IF(A1-TODAY()>7,"予定",CHOOSE(A1-TODAY()+1,"本日","明日","明後日"))))),"") 終了など文字を入れた場合 終了、終了2、終了3としています。 =IFERROR(IF(OR(A1="終了",A1="終了2",A1="終了3"),"完",IF(AND(A1<>"",E3<TODAY()),"期限切",IF(AND(A1-TODAY()>2,E3-TODAY()<8),"今週",IF(A1-TODAY()>7,"予定",CHOOSE(A1-TODAY()+1,"本日","明日","明後日"))))),"") 式の中でE3が出てきてましたのでそのままです。

その他の回答 (4)

回答No.5

ANo4の式の解説。 A1が日付(日付シリアル値、つまり「数値」)か、そうじゃないかを、IFで場合分けします。 ・数値の場合 A1が過去だったら、数値「3」を計算 A1が3~7日後だったら、数値「4」を計算 A1が8日以上後だったら、数値「5」を計算 A1が今日~明後日だったら、数値「6~8」を計算 ・数値じゃない場合 A1が空白だったら、数値「2」を計算 A1が「終了1」だったら、数値「9」を計算 A1が「終了2」だったら、数値「10」を計算 A1が「終了3」だったら、数値「11」を計算 A1が上記のどれでもなかったら、数値「1」を計算 これで、A1に何が入っていても「1~11」の数値が計算されます。 その「1~11」の値をもとに、CHOOSE関数で、対応する文字列に変換しています。 これは「条件式は、真なら数値の1、偽なら数値の0として数値計算できる」という仕様を利用しています。 成り立つ時はどれか1つしか成り立たない3つの条件式を 条件式1*1+条件式2*2+条件式3*3 というような式で書くと、 ・どれも成り立たない時は0 ・条件式1が成り立つ時は1 ・条件式2が成り立つ時は2 ・条件式3が成り立つ時は3 という、0~3の数値に出来ます。これに1を足して「1~4」にすれば、CHOOSE関数のインデックス(1以上の整数を指定する)に使える訳です。 複数の条件が同時に成り立つ可能性がある場合は 条件式1*1+条件式2*2+条件式3*4+条件式4*8 のように、1、2、4、8倍して足します。これで求まる値は0~15になります。上記同様に1を足せばCHOOSE関数に使えます。

回答No.4

簡単に追加が出来るようにしてみました。式がかなり長いですが。 =CHOOSE(IF(ISNUMBER(A1),(A1<TODAY())*2+(A1-TODAY()>2)*(A1-TODAY()<8)*3+(A1-TODAY()>7)*4+(A1>=TODAY())*(A1-TODAY()<3)*(A1-TODAY()+5),(A1="")+(A1="終了1")*8+(A1="終了2")*9+(A1="終了3")*10)+1,"エラー","","過去","今週","予定","今日","明日","明後日","完1","完2","完3") この数式の「(A1="終了1")*8+(A1="終了2")*9+(A1="終了3")*10)」の部分が、「終了1」を「完1」に、「終了2」を「完2」に、「終了3」を「完3」に変換する為の数式です。 CHOOSE関数の9番目、10番目、11番目の文字列の「完1」「完2」「完3」に対応します。 式の「+(A1="終了3")*10)」の後ろに「+(A1="終了3")*10)+(A1="終了4")*11)+(A1="終了5")*12)」のように追加し、「,"完1","完2","完3"」の後ろにも「,"完1","完2","完3","完4","完5"」のように追加すれば、幾らでも増やせます。 「終了1」と「終了1」のように、数字部分が半角全角どちらでも反応するようにするには「(A1="終了1")*8」を「((A1="終了1")+(A1="終了1"))*8」に変更して下さい。

回答No.3

=IF(A1="終了","完",IFERROR(IF(AND(A1<>"",E3<TODAY()),"期限切",IF(AND(A1-TODAY()>2,E3-TODAY()<8),"今週",IF(A1-TODAY()>7,"予定",CHOOSE(A1-TODAY()+1,"本日","明日","明後日")))),""))

回答No.2

前の見てないので、勘違いしてたらごめんなさい。 式が長くなりそうなので、作業列を設けました。 B1 に、基準になる日付を入れるようにして B2以降に =A2-$B$1 C1 に、=WEEKNUM(B1) C2以降に =WEEKNUM(A2)-$C$1 D2以降に =IF(B2<-1,"",IF(B2<0,"昨日",IF(B2 =0, "今日", IF(B2=1, "明日", IF(B2=2,"明後日",""))))) E2以降に =IF(C2<-1,"以前",IF(C2<0,"先週",IF(C2 =0, "今週", IF(C2>1, "以後", IF(C2>0,"来週",""))))) F2以降に =IF(ISERROR(D2), "完了", IF(D2="", E2, D2)) 作業列は、B,C,D,E列を選択して Shift+Ali+→ で 列の上に ”-”(マイナス)が表示されるので、 クリックすると、見えなくなります、そして ”+”(プラス)にかわります。 戻すときは、”+”を、クリックすれば戻ります。

関連するQ&A

専門家に質問してみよう