• ベストアンサー

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

  • excel エクセルIF関数の作り方を教えて下さい

       A        B       C       D      E 1  発注納期  修正(1)   修正(2)     修正(3)    遅延日数    2  7/9      7/21     8/4               25 3  6/7       7/28     8/5       7/27     -1  4  6/22     7/28     8/7       8/9      47 <A列:発注納期)に対して、B・C・Dと修正し、<E列:遅延日数>を計算する式を E2=IF(B2="","",DAYS360(A2,MAX(B2:D2))) と入力していましたが、そうすると E3=58 となります。 列B~列Dのうち一番右側を選択して計算して、 E3=-1 とするためには、どのような式を作れば良いのか教えてください。

  • if関数について

    if関数についてどなたか教えてください。 ある二つの名簿があって、二つの名簿を照合して名寄せをしたいのですが、たとえば、A列の1行目から10行目まで、同じくB列の1行目から10行目まで氏名が入っているとします。A列とB列に同じ名前が入っていれば、C列に○印をつけるように関数を設定したいのです。自分なりに考えて、次のようにif関数を設定しました。・・・がうまく表示されません。エラーは出ませんので、関数としては成り立っていると思うのですが、○印が表示されません。どなたか間違いを指摘いただけませんでしょうか? C1のセルに次の関数を設定して、C10までコピーをしました。 if(A1=$B$1:$B$10,”○”,””) よろしくお願いいたします。

  • これはエクセルのIF関数を使ってできますか?

    こんばんは。 エクセルで悩んでいます。 A列に、"大学"・"高校"をオートフィルタで選べるようにして、 B列に、大学なら1~4の数字、高校なら1~3の数字を入力します。 そして、C列に、A1="大学"かつB1=1なら30(ポイント)、         A1="大学"かつB1=2なら40、         A1="高校"かつB1=1なら20、         それ以外は空白 というような自動計算式を作りたいと考えています。 この場合、IF関数とAND関数で作成すればできますでしょうか。下記のような式を作成しましたが、うまくいきません。 =IF(AND(A1="大学",1),30,IF(AND(A1="大学",2),40,IF(AND(A1="高校",1),20,""))) 説明が下手で申し訳ありませんが、 なんとかアドバイスいただければ幸いです。 よろしくお願いします。

  • 日付を含む関数について。

    エクセル2003での質問です。 ある列のセル(A1とします)のセルに日付が書き込まれた時だけ、対応する列のセル(B1とします)に決まった文字(ここでは"済")が入るようにしたいと思いIF関数を使って組み立てたのですが、日付の入れ方が解らず上手く行きません。 =IF(A1="日付","済","") ←B1に書き込んでます。 と式を立てていますが、この・日付・の部分の入れ方を教えて頂けないでしょうか? また、勉強の為他の考え方も有ればお教え下さい。 宜しく御願いします。

  • IF関数について教えてください★

    A列に今年度の日付が入力されています。 例えば8/26~9/25は「9月度」とB列に表示したいです。 IF関数でできますでしょうか?? おわかりの方教えてくださーい!

  • エクセル IF関数 初心者です。。

    A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 2  9:30 Cさん 11:00 3  10:00 Dさん 12:00 4  10:30 Eさん 9:00  1  9:00 A列氏名 B列時間 C列 B列IF関数 9:00からは1、10時からは2、 11からは3・・・ D列はC列のVLOOKUP関数 1=9:00、2=9:30、3=10:00・・・ そこでお聞きしたいのですが・・ A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 3  10:00 Cさん 11:00 4  10:30 Dさん 12:00 5  11:00 Eさん 9:00  2  9:30 IF関数を用いて IF(B1>=0.375),1,if(B1>=0.416666666666667),2,IF(B1>=0.458333333333333),3・・・ Eさんが2になるような数式がわかりません。 よろしくお願いします。。

  • IF関数での質問です。

    IF関数での質問です。 関数でやりたい事は、毎日の利益額がプラスの時は、 その額の半分を預金します。 マイナスの時には預金はしません。 ただし条件があり、当日の利益がプラスであっても、 累積利益額が過去最高値を超えていなければ預金はしません。 A列に日付、B列に当日利益額、C列には累積利益額、D列に当日の預金額が入っているとします。 自分で考えたのは、 C列のセルに=IF(D3=" ",C2+B3,C2+D3) D列のセルに=IF(B3<0," ",B3/2) これだと売上げがプラスになった時に必ず預金してしまいます。 累積利益額が過去最高値に達した時だけ当日利益の半分を預金するように、 関数式を修正して頂けないでしょうか?

  • IF関数についておしえてください。

    お世話になります。 作成している表の中で、利用しようとおもっている関数について教えてください。 A1セルに下記のようなIF関数を作成しました。 =IF(AND(B2>=1,C2<=0),"○",IF(AND(C2>=1,B2<=0),"○",IF(AND(B2>=1,C2>=1),"○",IF(AND(B2<=1,C2<=1),"")))) B2セルは別シートからVLOOKUPを利用して検索してきて、数字を表示させているセルのため、 該当しない場合”#N/A”と 表示されるところがありました。それで、”=IF(ISERROR”を利用して、#N/Aと表示される場合、空白で表示される数式にしたところ、今度はA1セルが条件にあっていないのに”○”と表示されるようになりました。≪”B2=空白(”#N/A”),C2<=1の場合にあたるのだと思います。≫ *B2セルを”空白”ではなく”0”で表示させるようにしても同様に”○”となりました。 A1セルに、  B2>=1,C2<=0の場合”○”  C2>=1,B2<=0の場合”○”  B2>=1,C2>=1の場合”○”  B2<=1,C2<=1の場合"空白" で表示できる方法をご存じの方、ご教示お願いいたします。 簡単なことなのかもしれませんが、エクセル関数初心者のため、大変困っております。 うまく、不明な点を説明できていませんでしたら、申し訳ございません。何卒 よろしくお願いいたします。

  • Excel(IFとAND)の関数の組合せ…

    Excel2007にちょっとだけ踏み込んでいます。 添付図のC列に入れる(IFとAND)関数の組合せると、上手く書けず、エラーになってしまいます。 A列とB列を見比べて、 両方「○」なら「◎」 片方「○」なら「○」 「○」が無い場合は「×」 と書き、「C1」→c10までコピーしたいのです。 「C1」に書く式を(IFとAND以外でも)、教えてください。

  • IF関数でできますか?

    次のような条件でIF関数は使えますか? Aの値が50以上,Bの値は60以上,Cの値は150以上として3つとも条件をクリアしていれば○、A,B,C3つのうちどれか2つまでクリアしていれば△、1つもしくは3つともクリアしていなければ×をつけたいのですが、IF関数を使えばいいのでしょうか?○はANDを使えばいいと思うのですが、△、×はどうすればいいのでしょうか?

専門家に質問してみよう