EXCEL(関数)で見積書の決裁条件を設定する方法

このQ&Aのポイント
  • EXCELの関数を使って見積書の決裁条件を自動設定する方法を教えてください。
  • 具体的には、見積金額と利益率に基づいて課長決裁、部長決裁、社長決裁といった文字列を特定のセルに表記したいです。
  • マクロを使わずに関数だけで実現する方法を教えてください。
回答を見る
  • ベストアンサー

EXCEL(関数)について、教えてください。

EXCEL(関数)について、教えてください。 見積書をEXCELで作っております。(Excel2003) 100万以下は"課長決裁"という文字列をセルC1に表記 100万以上300万未満で、かつ利益率5%以上は"課長決裁"という文字列をセルC1に表記 100万以上300万未満で、かつ利益率5%以下は"部長決裁"という文字列をセルC1に表記 100万以上300万未満で、かつ利益率3%以下は"社長決裁"という文字列をセルC1に表記 ・・・・・・・ という感じで9個以上の条件があり「見積金額セル(例えばA1)」と「利益率セルB1」を参照しながら上記条件にそって課長決裁とか部長決裁、社長決裁といった文字列を特定セル(ここではC1)に表記させたいと思っております。 こういった場合、マクロなど使わずに関数で出来たら良いなと考えておりますが、どんな関数を使えば良いのでしょうか? 分かる方教えて下さい!

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.5

9個も条件があると、IF文のネスト制限にひっかかる可能性があります。 別表を作成して、その表から決裁者を引く形にしてはいかがでしょうか。 添付画像の「決裁者」(H4)の式は =VLOOKUP($H$2,$A$2:$E$6,MATCH($H$3,$A$1:$E$1)) です。

ukiukivike
質問者

お礼

非常に分かりやすかったです。解説図付きで丁寧な回答ありがとうございました

その他の回答 (5)

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

シート1のA列で例えばA1セルに見積金額、B列でB1セルに利益率を入力するとしてC1セルには次の式を入力します。 =INDEX(Sheet2!$A$1:$E$6,MATCH(A1,Sheet2!$A$1:$A$6,1),MATCH(B1,Sheet2!$1:$1,1)) シート2ではB1セルに0、C1セルに0.03、D1セルに0.05、E1セルに0.08と入力します。 A2セルには0、A3セルには100、A4セルには300、A5セルには500、A6セルには2000と入力します。 その他は以下のようにします。 0 0.03 0.05 0.08 0 課長決済 課長決済 課長決済 課長決済 100 部長決済 部長決済 課長決済 課長決済 300 社長決済 部長決済 部長決済 課長決済 500 社長決済 社長決済 部長決済 部長決済 2000 社長決済 社長決済 社長決済 社長決済

ukiukivike
質問者

お礼

回答ありがとうございます! 上記の通り一覧表にしてみたら条件が非常にわかりやすくなりました。 早速やってみます。

回答No.4

9個以上の条件があるのならif関数の羅列はありません。関数のネス トは7個までですからね。だいたいそんなもの、書けたとしても見渡 しが悪くて、条件変更がヒドく面倒なモノになります。 基本はlookup関数やmatch関数といった検索関数の組み合わせでしょ う。たとえば縦に金額、横に利益率の表を作り、交差したセルの内 容をかえすようにするんです。その際に、基準を「未満」ではなく 「以上」で考えて下さい。それがExcelの検索関数の発想です。      0%  3%  5%  8%    0 課長 課長 課長 課長   100 部長 課長 課長 課長   300 社長 部長 部長 課長   500 社長 社長 部長 部長   2000 社長 社長 社長 社長 これなら判りやすいですよね。名前の定義を駆使すればたとえば、 =lookup(A1,金額,hlookup(B1,利益率,1))なんてシンプルに書けたり もします。

ukiukivike
質問者

お礼

回答ありがとうございました。 皆さんの例を扱えるようになったら、このように分かりやすくシンプルにする技も 覚えたいです。 早速やってみます。

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.3

9つの条件をすべて提示して、回答を求めた方が良いと思います。論理条件をうまく整理しないと関数のネスト条件等に制限されます。 質問のないようでも以上、以下の使い方が不適切です。以上の対語は未満、以下の対語は超えるなどです。丁度条件の境界がダブっています。 例えば、図示して整理するなどされたらどうでしょうか?

ukiukivike
質問者

お礼

回答ありがとうございます。 早速下記補足に全条件を提示させて頂きました。 宜しくお願いします。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

利益率5%の分岐点が不明ですが、提示された部分だけを数式にするなら以下のようなIF関数になります(IF関数を作成するときのポイントはだんだん条件を広げていく順に絞り込む形で数式を作成します)。 =IF(A1<1000000,"課長決裁",IF(A1<3000000,IF(B1<0.03,"社長決裁",IF(B1<0.05,"部長決裁","課長決裁")),"300万以上")) 300万以上の部分にさらに条件があるなら「"300万以上"」の部分をさらにIF関数で分岐してください。

ukiukivike
質問者

お礼

詳細説明ありがとうございました!! 何となく出来そうです、早速試してみます!

ukiukivike
質問者

補足

ちなみに全ての条件を羅列しますと下記の通りとなります。 IFの条件文が途中から分かりづらく、例文頂けますでしょうか? 100万円未満のときは「課長決済」 300万円未満で利益率が5%以上のときは「課長決済」 300万円未満で利益率が5%未満のときは「部長決済」 500万円未満で利益率が8%以上のときは「課長決済」 500万円未満で利益率が8%未満のときは「部長決済」 500万円未満で利益率が3%未満のときは「社長決済」 2,000万円未満で利益率が5%以上のときは「部長決済」 2,000万円未満で利益率が5%未満のときは「社長決済」 2,000万円以上のときは「社長決済」

noname#198951
noname#198951
回答No.1

条件なので、IF文のネストで。 同じ条件が続くなら(今回の100万以上、300万未満など)、まとめられると思うけど。

ukiukivike
質問者

お礼

早速の回答ありがとうございます! IFかな~とはおもいつつ、どのような条文(?)になるか分からなかったので …。

関連するQ&A

  • エクセル関数

    関数でわからないのでお願いします   A    B    C    1 45        45歳以上 2 44        45歳未満 3 18         ・・・・・ 例えばA列に年齢入力すると 45以上はC1の文字 45歳未満は、C2の文字 18以下は、C3の文字が反映されるようにしたいのですが、 複数の条件の書き方が分かりません、それに A列が、空白の時エラーが出ないようしたいのですが、困ってます。よろしくおねがいします。

  • EXCEL VBAの書き方を教えてください

    EXCEL2010および2013を使用しております。 以下の場合、どのようなコードを書いたらよいか、教えてください。 (1)EXCELで図のような表を作っており、B列に「時刻」表記だけを表示させるように したいです。  時刻表記(10:00や12:00など)以外に文字列(15時ころ、19時前後)が入っていますが、 文字列が入っているセルは文字を消して、時刻表記だけのセルに統一するにはどのようなコードを書けば良いでしょうか。 例の図には「15時ころ」などの文字列が入っていますが、他の別シートには文字列はなく、すべて時刻表記が入っている場合もあります。 (2)以下の場合のコードの書き方も教えてください。 D列が20%以下の場合はE列の「利益」を0と入力し、D列が21%以上の場合はC列「粗利」とD列「割合」をかけたものを、E列の「利益」に表示する。 VBAを勉強し始めたばかりで色々と調べてみたのですがなかなか難しく、お分かりになる方のお力をいただければと思います。 宜しくお願いいたします。

  • エクセル関数について

    セルA×B=C Cの答えが1未満ならI、1以上2未満ならII、2以上はIIIと セルDに値を返したいときどのような関数を使えばよいでしょうか?

  • この場合、エクセルの関数はどれを使ったらよいでしょうか?

    会社で「受注工事の管理表」を作成しています。(以下「×」は数字です。) A列に案件のID番号(19-×××) B列に決裁符号(第特×××号→「東日本」、第××××号→「西日本」、GL××××→「西日本」) C列に決裁番号(第特×××号、第××××号、GL××××) D列に決裁者 以下金額その他がずらずら続きます。 問題は、C列の決裁番号によって、B列の決裁符号とD列の決裁者が違ってくる事です。 そして、C列を入力すると、B列とD列に、反映されるようにしたいのです。 B列の決裁番号は、「第特×××号」「第××××号」「GL××××」の三つのパターンがあります。 数字の数でIFや不等号を組み合わせて作ってみたら、「第特」や「第」「号」など、数字以外に余計な漢字が入っていた為、うまくいきませんでした。 VLOOKUPで取り込もうとしたのですが、これもうまいやり方がわかりませんでした。 どなたか、簡単な(解りやすい)関数でまとめる方法をご伝授下さい。

  • Excelの関数について

    Excelの関数について教えて下さい。 小数点2位未満の端数について、切り上げor切り捨ての処理をしたいのですが、 具体的には、計算結果が50銭円以下の場合には切り捨てて0円に、 50銭1厘以上の場合には切り上げて1円にしたいのですが、 どんな関数を使えばよいのでしょうか? (例1)A1:¥64、B1:0.008、C1:A1*B1=¥0.512→¥1 (例2)A2:¥63、B2:0.008、C2:A2*B2=¥0.504→¥0 ※雇用保険料の計算です、  A列には給料の金額が入り、  C列には円未満が50銭以下の場合は円未満切り捨て、円未満が50銭1厘以上の場合は円未満切り上げとなります。 宜しくお願いいたします。

  • エクセル関数

    参照先のセルが空白の場合に値が入力されているセルまで列を遡って参照したいのですが、そのような時はどういった関数を使えば可能でしょうか? 具体的には添付画像のようなケースです。 A列には日付、B列にはニューヨークダウの終値が入力されています。 C列では当日終値の前営業日に対する変動率を求めます。 当日のB列が空白の場合はC列にも空白を返します。 前日の終値が空白のC3048とC3057にエラーが出ます。 C3048ではB3048のB3046に対する変動率、 C3057ではB3057のB3052に対する変動率 を求めます。 このケースではC列にどのような関数式を使えばよろしいでしょうか。 質問の文章が分かりづらくて申し訳ありませんが、よろしくお願いいたします。

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • エクセルの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不可)などでも構いませんので、 どなたかご教授願います。 宜しくお願いします。

  • エクセル関数式

    エクセルの関数式で質問です。 A列 B列 C列 1 100 200 kuruma 2 200 300 densha 同じ行の中で、A列以上、B列未満に該当していれば、C列を 出力するという関数式ってわかりますか? 例えば"150"という数字があるとすると、100以上200未満なので 結果が"kuruma"という感じです。

  • Excelの関数『IF』にて・・・

    EXCELにて、関数IFを使って一覧表から 自動入力をしたいと考えています。 例えば、以下のようにしてセル『C1』の数字に 応じて、自動を試みたい時 =IF($C$1>80,"=A1",IF($C$1>70,"=B1","=C1")) =A1,=B1,=C1 の場所を文字列としてしか読み取ってくれません =A1,=B1,=C1では無く=A1,=B1,=C1のセルに入力されてる 数式(他のセルの値)を、表示したいんですが どのようにすれば可能でしょうか? 何度やっても「=A1」と、そのまま文字列として出て来ちゃいます。

専門家に質問してみよう