• ベストアンサー

IF関数 論理が複数の場合について

IF関数について教えてください。 添付のような表があり、 本日7/20で B列に日付が入っていたら、B列の日付とC列の状況 B列に日付が入っていなければA列の日付とC列の状況をみて D列に"完納"か"遅延"かを表示させたいのですが、 =IF(AND(C2="済",B2<TODAY()),"完納","遅延") この式ではB列に日付が入っていない時はA列の日付を見る ということが入っていません。 どのように修正したらよいのかご教示お願いいたします。

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

  • ベストアンサー
回答No.5

>……フォーマット上他のセルを使用できない状態です。 では、列を追加しない数式も下のとおり回答します。 ただ、「フォーマットを変更できないので…」とおっしゃる質問者の方は確かに多いのですが、実際は、シートの追加なら可能というケースが多いんじゃないでしょうか。Excel は他シートのセルから参照することもできるので、作業列を他シートに設けることには何ら問題ありません。 質問文の表だと、納品日が記録されないことになりそうなので、それで大丈夫だろうかと考え、こちらで追加して回答したまでです。もしも既に他シートとかどこかに納品日が記録してあるのであれば、「=if(sheet2!c2,"済","")」という具合に、そのデータを利用できますね。下で回答する数式にしても、同様です。 また、たとえ同じシート内であっても、印刷範囲あるいは改ページの外の位置であれば、作業列を設けても差し支えないというケースが多いのではないかと推察します。 >納期回答が来ていなければ希望納期の日付。 そういう意味だったのですね。であれば、次式になります。 D2 =if(c2="",if(a2*(max(a2:b2)<today()),"遅延",""),"完納")

suica52
質問者

お礼

希望通りの結果が表示されました。 ありがとうございました!

その他の回答 (4)

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

D2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(AND(A2<TODAY(),C2="済"),"完納","遅延"))

suica52
質問者

補足

回答ありがとうございます。 教えていただいた式ではB列の納期回答の日付が入っていたら、 その日付を見て、の部分が入っていないように思うのですが… 納期回答があれば納期回答の日付が優先なのです。 納期回答が来ていなければ希望納期の日付。 その日付を過ぎて品物が納品になっているか、遅れていないか? このチェックをしたいのです。

回答No.3

No.1・2 です。再三、申し訳ありません。次式のほうがシンプルでした。No.2 と同じ結果になります。 D2 =if(c2,"済","") E2 =if(c2,"完納",if(a2*b2*(b2<today()),"遅延",""))

suica52
質問者

補足

回答ありがとうございます。 教えていただいた式だとE列を追加ですね。 後出しになってしまいますが、 フォーマット上他のセルを使用できない状態です。

回答No.2

No.1 です。何度もすみません。ケアレスミスしてしまいました。 遅延については、「済」の有無ではなく、納品日と当日の比較により判定すべきでした。 それと、「済」があったら遅れていても完納としたいんですね。納期が回答されていなければ、結果は非表示ですかね。結構、複雑ですね。 D2 =if(c2,"済","") E2 =if(c2,"完納",if(a2*b2,if(b2<today(),"遅延",""),""))

回答No.1

添付図では、次式を入力しています。 D2 =if(c2,"済","") E2 =if(a2,if(d2="","遅延","完納"),"")

関連するQ&A

専門家に質問してみよう