エクセル-複数が複数ある場合のIF関数について

このQ&Aのポイント
  • エクセルで、複数の条件がある場合のIF関数について悩んでいます。機械の運搬金額を条件ごとに計算する方法を知りたいです。
  • 条件としては、機械サイズ、時間帯、運搬距離の3つがあります。それぞれの条件ごとに金額一覧表があり、それを元に計算を行いたいです。
  • IF関数を使えば、条件ごとに適切な式を作成することは可能ですが、条件の組み合わせが多くなると複雑になります。その場合は他の方法を考えた方が良いです。
回答を見る
  • ベストアンサー

エクセル-複数が複数ある場合のIF関数について

はじめて質問させていただきます。 現在、EXCEL2003で機械の運搬金額を[サイズ][時間帯][運搬距離]という、3つの条件がある場合の算出方法を考えているのですが、どうしても出来ません。 条件としては 1.機械サイズが[A][B][C][D]と4の条件に分かれる 2.時間帯が[昼間][夜間]と2の条件に分かれる 3.運搬距離が[~1km未満][1以上~5未満][5以上~10未満][10以上~15未満]…と15の条件に分かれる となっています。 ちなみに、各条件の金額一覧表は別のワークシートに作成しています。 (位置の変更可能) この様な、条件が2つ以上あり、うち1つはパターンが15個もある場合IF関数で式を作成する事は可能でしょうか? また不可の場合は他に何か良い方法はありますか? 宜しくお願いします。

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

  • ベストアンサー
  • suekun
  • ベストアンサー率25% (369/1454)
回答No.3

VLOOKUPの解説の中に 解説 検索の型に1を指定し、検索値が見つからない場合は、検索値未満で最も大きい値が使用されます。 検索値が範囲の左端の列の最小値より小さい場合、エラー値 #N/A が返されます。 とあります。 つまり、    A  B 1   0  0~4.99 2   5  5~9.99 3  10  10~14.99 4  15  15~ と言う対応表になります。 この事から、ご質問内容に合わせた形に直すと    A      B 1   0   0~5までの料金 2   5.1  5.1~10までの料金 3  10.1  10.1~15までの料金 4  15.1  15.1~20までの料金 5  20.1  20.1~の料金 となるかな? 10Kは5.1の横の料金に該当します。 11Kは10.1の横の料金ですね。

assomar
質問者

お礼

なるほど、すごく勉強になりました。 おかげで無事に作り上げることが出来ました。 ありがとうございました。

その他の回答 (2)

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.2

まず下記の様な対応表を用意します。   A  B  C  D  E 1 昼間 A  B  C  D 2  0 10  30  50  80 3  1 100 130 150 180 4 5 200 230 250 280 5 10 300 330 350 380 6 15 400 430 450 480 7 20 500 530 550 580 8 25 600 630 650 680 9 10 11 夜間 A B C D 12 0 15 35 55 85 13 1 105 135 155 185 14 5 205 235 255 285 15 10 305 335 355 385 16 15 405 435 455 485 17 20 505 535 555 585 18 25 605 635 655 685 この中で、A1からD8までを選択して、名前ボックスで「昼」と 名前をつけましょう。 同じ様に夜間の対応表にも「夜」と名前をつけましょう。 次に、下記の様な入力箇所を用意をします。 21 A B C D E 22 サイズ 距離 昼夜 金額 23 そしてそれぞれA23には「A/B/C/D」を入れます。 B23は距離を直接入れましょう。 C23は「昼」か「夜」と入力します。 (この部分は実際の内容に合わせて入力して下さい) 最後にD23に金額を算出する訳ですが、数式は =VLOOKUP(B23,INDIRECT(C23),MATCH(A23,A1:E1,0),1) これで動くと思います。 基本は、B23の距離を読んで金額を出すのですが、 ABCDのどれを出すかは、MATCHで整合取ります。 そして昼夜の切り替えは、INDIRECTで範囲を切り替えます。 表が乱れていますが、ご容赦下さい。

assomar
質問者

補足

回答ありがとうございます。 しかし、金額は出る様にはなったのですが、 距離の条件が合わないようです。 例えば 10(05kmより上~10km以下)  1000円 15(10kmより上~15km以下)  1500円 20(15kmより上~20km以下)  2000円 の場合、10kmであれば"1000円" 15kmであれば"1500円"と 表示されるのですが、 11km…1000円 17km…1500円 という風に、一つ上の状態で認識してしまう様です。 金額の欄を一つずらせば何とかなるかも知れませんが、 他に解決策はあるでしょうか? 宜しくお願いします。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

4*2*15=120通りですか? 通常では無理なので A昼間01 A 昼間 1km未満 A昼間02 A 昼間 1km以上5km未満 ・ D夜間14 D 夜間 50km以上100km未満 D夜間15 D 夜間 100km以上 のように取り出しやすいようにINDEXを作ってVLOOKUP関数で検索でしょうね。

assomar
質問者

お礼

アドバイスありがとうございました。

関連するQ&A

  • エクセルのIF関数について教えてください

    教えてください A列の数字(時間)からB列の金額をはじき出したいです A列(時間)          B列(金額) 120時間以上        8,000円 80時間以上120時間未満  6,000円 40時間以上80時間未満  4,000円 40時間未満          2,000円 この関数を教えてください よろしくお願いいたします。

  • エクセル 複数条件のIF関数 

    0から360の数字がランダムに入力されているA列があります。この数字を以下の条件でB列に入力したいのです。 (1)288以上なら280を引く (2)144以上なら144を引く (3)72以上なら72を引く (4)72未満ならその数字のまま入力 結果として、72未満の数字がB列に入力されることになります、 IF関数を使えばできるのかなと思いますが、違う方法でもよいです。 4万セルくらいを処理するので一番簡単な方法を教えてください。 よろしくお願いいたします。

  • IF関数の複数条件の設定

    IF関数を使って、振込先銀行・請求額から条件を5つ設定して手数料を出すよう設定したいのですが、何度試してもうまく行きません>< 条件1:請求金額が1万円未満→手数料 0円 条件2:請求金額が1万円以上3万円未満、かつ振込先がUFJ→手数料 315円 条件3:請求金額が3万円以上、かつ振込先がUFJ→手数料 525円 条件4:請求金額が1万円以上3万円未満、かつ振込先がUFJ以外→手数料 630円 条件5:請求金額が3万円以上、かつ振込先がUFJ以外→手数料 840円 丸投げに近い質問で恐縮ですが、アドバイスよろしくお願いします。

  • エクセルのif関数で8つ以上ある場合について教えて下さい。

    エクセルのif関数で8つ以上ある場合について教えて下さい。 バージョン:エクセル2002 以下のような場合       1,000未満 → A 1,000以上 1,500未満 → B 1,500以上 2,000未満 → C 2,000以上 2,500未満 → D 2,500以上 3,000未満 → E 3,000以上 3,500未満 → F 3,500以上 4,000未満 → G 4,000以上 4,500未満 → H 4,500以上 5,000未満 → I 5,000以上       → J 現在のエクセルバージョンでは、 if関数の7レベルを超えてしまい、Lookup関数では一致した値しか拾ってくれません。 このような場合、以上、未満などの比較演算子を使用した範囲内の数値の分岐結果を取得するには どのようにすればよいのでしょうか? 現在は、次のように表を作成して行っております。     A     B   C  ←セル列  1        1,000  A  2  1,000   1,500  B  3  1,500   2,000  C  4  2,000   2,500  D  5  2,500   3,000  E  6  3,000   3,500  F  7  3,500   4,000  G  8  4,000   4,500  H  9  4,500   5,000  I  10  5,000        J  ↑ セル行 別の関数などを使用してできる場合(VBA不可)などでも構いませんので、 どなたかご教授願います。 宜しくお願いします。

  • IF関数教えてください><

    IF関数で、 売上金額が500,000未満の場合は「○」で、500,000以上、1,000,000未満の場合は「△」 1,000,000以上の場合は「×」にしなさい。 という問題の場合ってどういう式を作ればいいんですか。 ※売上金額の欄が仮にAの欄に書いてあるとする。 ※セルに直接式を入力する場合のやり方でお願いします。

  • IF関数?

    関数に関して、教えて下さい。(Excel2013使用) もし、A1が40以上の場合はB1×0.1、A1が40未満の場合はB1×0.5 という答えを出す式を作りたいです。 よろしくお願いいたします。

  • IF関数

    A1に平均値で示した数値(0.0001~99.9999)を、下の1~9でカテゴリー分けしたいのです。 1.0.5時間未満 2.0.5時間以上~1.0時間未満 3.1.0時間以上~1.5時間未満 4.1.5時間以上~2.0時間未満 5.2.0時間以上~2.5時間未満 6.2.5時間以上~3.0時間未満 7.3.0時間以上~3.5時間未満 8.3.5時間以上~4.0時間未満 9.4.0時間以上 IF関数でしたのですが、下の式の通り8項目しか入らず良い方法がありましたらおしえてください。よろしくお願いします。 =IF(A1<0.5,"1.0.5時間未満",IF(A1<1,"2.0.5時間以上~1.0時間未満",IF(A1<1.5,"3.1.0時間以上~1.5時間未満",IF(A1<2,"4.1.5時間以上~2.0時間未満",IF(A1<2.5,"5.2.0時間以上~2.5時間未満",IF(A1<3,"6.2.5時間以上~3.0時間未満",IF(A1<3.5,"7.3.0時間以上~3.5時間未満",IF(A1<3,"7.3.0時間以上~3.5時間未満"))))))))

  • Excel 長すぎるif関数

    こんにちは。Excelを使って、条件によって表す表示を変える場合、 例えばa1のセルには0~100までの任意の数字を入れるとして、b1のセルにa1の数字に応じていろいろな表示をしたい場合(具体的には100ならAを表示、90~99ならB、70~89ならC、55~69ならD・・・といったように)、if関数を使うと思いますが、 =if(a1=100,"A"1,if(a1>=90,"B",if(a1>=70,"C",if・・・・)))というように長々と続きますね。条件が少ないうちはいいのですが、条件が多くなると、大変複雑な式になり、入力もしづらいし、頭も使うし、閉じる括弧の数もわからなくなるし、作成に時間もかかりますよね。2つ以上の条件が重なる(例えばA1が90~99の範囲でかつa2がAならb1にB1と表示するなど)など複雑になってくるともうお手上げです。 これらを短時間で要領よく作成する方法はないでしょうか?次の観点で教えてください。 1 if以外の良い関数はあるか?または良い機能はあるか?それとも複雑であってもif関数が妥当なのか? 2 (if関数が妥当であるとして)複雑なif文の作成を簡単にできる方法があるか?あるいはそんなソフトがあるか? 3 やっぱりそういうのはVBAとかで作った方がいいのか?(できれば使いたくないのですが。)

  • エクセル IF関数の複数条件設定の仕方教えてください。

    エクセル IF関数の複数条件設定について教えてください。 E1の値が下のような場合にF1に%を表示する 3200000 以上 3300000 未満の時 1.0%を表示する 3300000 以上 3400000 未満の時 1.5% 3400000 以上 3500000 未満の時 2.0% 3500000 以上 3600000 未満の時 2.5% という関数を作りたいのですが、 =IF(2200000<E15<2300000,-12.9%,(IF(2300000<E15<2400000,-10.9%))) のような形で良いかと思ったのですが、上手くいきません。 是非教えていただきたいのでよろしくお願いします。

  • 複数(5つ)の条件を指定したIF関数

    IF関数を用いて以下のように場合、どのようにすればよいでしょうか。 条件は5つです。 ご教授をお願いします。 (1)A1のセルの値が300,000以上、400,000未満の場合、B1に5,000と表示 (2)A1のセルの値が400,000以上、600,000未満の場合、B1に7,500と表示 (3)A1のセルの値が600,000以上、800,000未満の場合、B1に10,000と表示 (4)A1のセルの値が800,000以上、1,000,000未満の場合、B1に12,500と表示 (5)A1のセルの値が1,000,000以上の場合、B1に15,000と表示

専門家に質問してみよう