ExcelのIF関数を使用した修正と遅延日数の計算方法

このQ&Aのポイント
  • ExcelのIF関数を使用して、発注納期に修正がある場合、修正最終日と遅延日数を計算する方法を教えてください。
  • IF関数を使用して列B〜列Dの修正日を比較し、一番右側の修正日を選択して遅延日数を計算する方法を教えてください。
  • ExcelのIF関数を使って、発注納期に修正がある場合は一番右側の修正日を選択し、それに対応する遅延日数を計算する方法を教えてください。
回答を見る
  • ベストアンサー

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 とするためには、どのような式を作れば良いのか教えてください。

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

  • ベストアンサー
  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.1

IFをネストして、検査順番をD列からやれば良いと思いますよ。 E3=IF(D3<>"",DAYS360(A3,D3),IF(C3<>"",DAYS360(A3,C3),IF(B3<>"",DAYS360(A3,B3),0))) 上記の式だと、 D3が空欄以外の場合はDAYS360(A3,D3) D3が空欄でC3が空欄以外の場合はDAYS360(A3,C3) D3とC3が空欄でB3が空欄以外の場合はDAYS360(A3,B3) D3、C3、B3全部が空欄の場合は、0を表示するという式になっています。 ご参考まで。

その他の回答 (7)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.8

参考までに =IF(B2<>"",DAYS360(A2,IF(D2<>"",D2,IF(C2<>"",C2,B2))),"") 略して =IF(B2,DAYS360(A2,IF(D2,D2,IF(C2,C2,B2))),"")

gegegenokitaro
質問者

お礼

ありがとうございました。参考にさせて頂きます。

  • yhc3594
  • ベストアンサー率27% (25/92)
回答No.7

意図されていることと違うかも知れませんが E4の値が正しくて、記述通りの動作をさせるとE3=50が正しいと思いますが・・・ *だとすれば、以下の方法(最善策か否かは別として)で如何でしょうか? E2=IF(B2="","",IF(C2="",DAYS360(A2,B2),IF(D2="",DAYS360(A2,C2),DAYS360(A2,D2)))) 以上

gegegenokitaro
質問者

お礼

申し訳ございません。元のデータが誤っておりました。 ご指摘の通り、    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     50  4  6/22     7/28     8/7       8/9      47 でした。たいへん申し訳ございませんでした。

  • mi7443
  • ベストアンサー率56% (74/131)
回答No.6

DAYS360関数式の開始日がA2(3列目ですからA3かな?)になっていれば、当然そうなるのではないでしょうか?なにか、勘違いされているように思えるのですが? 以下蛇足 6月→(30-7=23日)、7月→(30日)、8月→(5日)、⇒23+30+5=58ですよね。

gegegenokitaro
質問者

お礼

申し訳ございません。元のデータが誤っておりました。 ご指摘の通り、    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     50  4  6/22     7/28     8/7       8/9      47 でした。たいへん申し訳ございませんでした。

  • 522923
  • ベストアンサー率31% (66/212)
回答No.5

ご質問の内容がいまいちよく分りません。 質問者様が書かれている内容は当然の結果です。そして、私が分らないのは、質問内容である「-1」となる意味です。 質問者様が最初に書かれている、 >>A列:発注納期)に対して  ↑ これは、A列の発注納期に対してどれだけの遅延日数があるのか?という事ですよね? それに対して、1つ目の修正がB列。更に修正をしたのがC列。更に更に修正をしたのがD列ですよね。 だとすると、今回の質問は 初期納期6/7に対して、3度の修正を加え遅延した最終納期は7/27となっています。 A列に対してという事は、基準が6/7に対してとなります。そしてB~Dの一番右側を選択してとなると、7/27が対象となります。普通に考えても『-1』という結果が出ること自体がおかしいです。 6/7の納期が7/27になった。その遅延日数が『-1』っておかしくないですか? 唯一考えられるのが、1回目の修正の7/28に対してであれば『-1』が出ます。 しかしこの方法だと、E2とE3の結果が変わってしまいますよ? 質問者様が、求めたい結果と、その基準、が一律で無い為に、回答のしようがありません。 E3に『-1』を出したいのであれば、A列を基準とするのではなく、B列を基準として考えるしかありません。もしくは、入力されている元の日付データが違っていませんか?

gegegenokitaro
質問者

お礼

申し訳ございません。元のデータが誤っておりました。 ご指摘の通り、    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     50  4  6/22     7/28     8/7       8/9      47 でした。たいへん申し訳ございませんでした。

noname#204879
noname#204879
回答No.4

》 列B~列Dのうち一番右側を選択して計算して、 》 E3=-1 》 とするためには・・・ 「一番右側」(D3)の「7/27」とどのセルとの差を「-1」としたいのですか?

gegegenokitaro
質問者

お礼

申し訳ございません。元のデータが誤っておりました。 ご指摘の通り、    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     50  4  6/22     7/28     8/7       8/9      47 でした。たいへん申し訳ございませんでした。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.3

=IF(D2<>"",D2-A2,IF(C2<>"",C2-A2,IF(B2<>"",B2-A2)))

gegegenokitaro
質問者

お礼

ありがとうございました。参考にさせて頂きます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

E3は、=DAYS360(A3,D4) になれば良いんですよね?その場合、-1ではなく50になりませんか? それで良ければ、E2に↓の式を入れて下にコピーして見てください。 =IF(B2="","",DAYS360(A2,LOOKUP(10^10,B2:D2)))

gegegenokitaro
質問者

お礼

申し訳ございません。元のデータが誤っておりました。 ご指摘の通り、    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     50  4  6/22     7/28     8/7       8/9      47 でした。たいへん申し訳ございませんでした。

関連するQ&A

  • EXCEL ワイルドカード IF関数

    お世話になっております。 早速ですが質問です。 A1 発注先 B1 単価 C1 1  D1 2  E1 3  とあります。 A1の発注先が山田(C1)、鈴木(D1)、サトウ(E1)だったとき、B1に1か2か3の数字が現れるようにしたいのです。 式は B1に =IF(A1="","",IF(A1="山*",C1,IF(A1="鈴*",D1,IF(A1="サ*",E1,"")))) と作っているのですが、ワイルドカードが認識されません。 質問をする前に色々な質問をざっと読んでみたのですが、 やはりIF関数だとワイルドカードは認識されないのでしょうか? もし認識されないとしたら、他にどんな関数を用いたらよいでしょうか? 回答 宜しくお願いいたしますm(__)m

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

  • (エクセル) IF関数について

    お世話になります。 A列、B列に元データ(科目名)があります。 それを元にして、C列(国語)、D列(英語)、E列(生物)、F列(化学)に並びたいのです。↓のような感じ。 A列   B列   C列   D列   E列   F列    英語   化学      英語        化学     国語   英語  国語  英語           生物   化学           生物   化学         国語   生物  国語       生物            英語   化学      英語        化学      A列、B列の元データが、100以上あるので、手動での作業は難しいです。 自分が作った条件式は、例えば、セルD1に、 =IF(A1=”英語””英語”,””)  という感じで条件式を作成したのですが、それだとB列に英語がある場合は、セルD1には英語がでません。 どうぞ宜しくお願いします。

  • EXCEL IF関数に関する質問

    EXCELです。よろしくお願いします。 A列(A1~A300まで) に0~100までの数字が入っています。 B列に80以上100以下ならA、    60以上79以下ならB、    40以上59以下ならならC、    20以上39以下ならD、    0以上19以下ならEを 入れたいのです。 そして C列にB列がAなら5、    B列がBならば4、 B列がCならば3、 B列がDならば2、    B列がEならば1 を入れたいのです。 B1とC1のどのような関数を入れればよいですか。 教えてください。 よろしくお願いします。  

  • エクセルのIF関数について

    エクセル初心者です。毎月の支払出来高の表を作っています。A列に項目、B列に契約金額、C列に”済”と支払いが完了したら表示するように式が入ってます。D列以降は月々の累計支払いが入っています(例えば100万で契約して1月~12月で支払い)。D列 1月 E列 2月・・・・。 12月の次の列に残高計算する式が入っています。  そこで質問なのですが、C列に, IF(BR119=0,"済",IF(BR119<0,"NG","")),IF(D119<0,IF(BR119>D119,""))と入れたのですが、B列の金額の欄には値引き額があってマイナスの金額があるのです。契約金額を上回った時に”NG"と表示させたいのと、完了した時に”済”を表示させたいのですが、マイナスのところがうまくいきません。どうかアドバイスお願いします。

  • エクセルのネスト回数について(IF関数)

    こんにちは。昨日も同じような質問をしたのですが、うまくいかないので再度詳細を書いて質問させていただきます。 まず、A1にはドロップダウンリスト(以後DL)でAとBが選べるようにしています。A1の値に応じてBはそれぞれに対応したDLがでるようになっています。仮にAに対応するリストをa,b,c、Bはα,β,γ、とします。ここまではできているのですが、次にC列、D列、E列も同じくB列の値に対応したDL(C,D,Eは別の内容のリスト、例えばB列がaならC列はa1,a2,a3、D列はb1,b2,b3、bならC列はd1,d2,d3、D列はe1,e2,e3)が表示されるようにしたいのですが、もう一度この例を参考にご教授ください。ただし、実際にはB列の項目が13あります。ここが引っかかっています。よろしくお願いします。

  • エクセルのIF関数について

    IF(A1-B1-C1-D1-E1-F1>0,A1-B1-C1-D1-E1-F1,0) 上の式は「A1-B1-C1-D1-E1-F1」が0より大きく真の場合その結果を、偽の場合0という式です。その結果の部分に前提となる式を繰り返しで記していて見た目非常に長くなります。別のセルに代入して参照以外の方法で真の場合を短くする手法は無いでしょうか?

  • エクセルの関数式について

    エクセルの関数式について教えて下さい。 たとえば大会等で参加日数に応じてメダルを進呈する場合の 一覧表を作成する場合  A   50個  50日~100日  B   30個  30日~49日  C   20個  15日~29日 A列に日数を入れた場合に 自動的にB列にアルファベット、C列に金額が計算される式を教えていただきたいのですが・・・ エクセル表としては A列     B列       C列 ○日   アルファベット  ○○○円 ↑ ここに日数を入れた場合にB,Cが自動で計算する式を知りたいのですが・・・ よろしくお願いします。

  • IF関数について

    EXCELのIF関数について教えて下さい。 A列 B列  C列 D列 ○     ○  ○    ○  ×  × ×     ○  × AもしくはB列が○で、C列が○ならD列は○ AもしくはB列が×で、C列が○ならD列は× AもしくはB列が×で、C列が×ならD列は× AもしくはB列が空白で、C列が空白ならD列は空白 と言った条件式をD列のセルに記述しようと思っています。 試行錯誤してみたんですが、上手くいきません。 アドバイスでも構いませんので、教えて下さい。

専門家に質問してみよう