- ベストアンサー
エクセル関数の作り方(IF関数で作れますか?)
エクセルで営業別売上表を作成したいのですが、下記のような場合の関数の作り方が分かりません。 A列に入る文字(F列に入る数値は売上ー仕入の金額です) ”V"の場合 F1*0.5 ”N"の場合 F1*0.2 ”C"の場合 F1*0.6 ”H"の場合 F1*0.4 ”稲垣”の場合 F1*0 ”榊原”の場合 F1*1.0 これらをまとめて一つの欄に入る関数はあるのでしょうか? (得意先別で各営業への売上金額の割合が違うのです。) 教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例です。 =IF(A1="V",F1*0.5,IF(A1="N",F1*0.2,IF(A1="C",F1*0.6,IF(A1="H",F1*0.4,IF(A1="稲垣",F1*0,IF(A1="榊原",F1*1,)))))) この数式を他のセルにもコピーします。
その他の回答 (2)
- kouji_124
- ベストアンサー率46% (283/605)
色々方法は考えられます。 IF関数で作る事も可能ですが、効率が悪いので他の方法で作成してみました。 例1:[=F1*CHOOSE(MATCH(A1,{"V","N","C","H","稲垣","榊原"},0),0.5,0.2,0.6,0.4,0,1,)] CHOOSE関数とMATCH関数の組み合わせです。 CHOOSE関数は「CHOOSE(インデックス,値1,値2,値3,・・・)」の様に指定します。 関数の働きとしては、「インデックス」の値によって「以降指定された値」を返します。 今回の場合、インデックスに指定する値は文字を元に求めたければいけないので、MATCH関数を使い求めてみました。 MATCH関数は「MATCH(検査値,検査範囲,照合の型)」の様に指定します。 MATCH関数の働きは「検査値」に指定された値を「照合の型」に指定された判定方法で「検査範囲」から探し、値が見つかった位置を数字で返します。 検査範囲は{,,,,,}の形で直接指定も可能です。 照合の型に[0]を指定しているのは、完全に一致した物だけを探す為です。 上記例だとセルA1に文字が入力されていない場合やリストに無い文字が指定されるとエラーが返されてしまうので下記の様にエラー対策を施す方が良いと思います。 [=IF(ISBLANK(A1),"",,IF(ISNA(MATCH(A1,{"V","N","C","H","稲垣","榊原"},0),"",F1*CHOOSE(MATCH(A1,{"V","N","C","H","稲垣","榊原"},0),0.5,0.2,0.6,0.4,0,1,))] セルA1が空白かどうかを調べるためにISBLANK関数を使用し、MATCH関数がエラーを返しているかどうかを調べるためにISNA関数を利用しています。 例2:[=F2*VLOOKUP(A2,Sheet2!A:B,2,FALSE)] VLOOKUP関数を使用した例です。 VLOOKUP関数は「VLOOKUP(検索値,範囲,列番号,検索の型)」の様に指定します。 VLOOKUP関数の働きは「検査値」に指定された値を「検索の型」に指定された判定方法で「範囲」から探し、値が見つかった行の先頭から「列番号」分ずれたセルの値を返します。 この場合、リストを作成しなければいけないので「Sheet2」にリストを作成しました。 リストの形式は、セルA1に[V]、セルB1に[0.5]、セルA1に[N]、セルB1に[0.2]の様にしました。 範囲が[A:B]の様に列のみを指定しているのは、[A1:B6]の様にしてしまうと後からリストに追加する必要が出た場合に大変なので、後々のために列のみ指定しました。 「検索の型」に[FALSE]を指定しているのは「完全一致」検索の為です。 例1の時と同じでセルA2が空白だったり、リストに無い文字が指定されるとエラーが返されてしまうので下記の様にエラー対策を施す方が良いと思います。 [=IF(ISBLANK(A2),"",IF(ISNA(MATCH(A2,Sheet2!A:A,0)),"",F2*VLOOKUP(A2,Sheet2!A:B,2,FALSE)))] 式がすっきりして見えると思いますが、VLOOKUP関数で使用するリストをMATCH関数で流用している為です。
お礼
ありがとうございます。 使ったことの無い関数なので一度作ってみます。
- mame205
- ベストアンサー率37% (34/91)
F列の隣に2列追加するのは駄目でしょうか? できるのであれば、VLOOKUP関数でできます。 (1)別シート等に、文字列と掛け率の表を作成しておく。 A B 1 V 0.5 2 N 0.2 3 C 0.6 ・ ・ ・ (2)G列に、「=VLOOKUP(A1,Sheet2!$A$1:$B$6,2,0)」と式を入れる。 Sheet2!$A$1:$B$6は、(1)で別シートに作成した表の範囲です。 その後の「2」は、A列の値を見て、表の2列目(掛け率)を返します。 (3)H列に、「=F1*G1」と入力すれば、(売上-仕入)*掛け率が出ます。 ご参考になれば幸いです。
お礼
別シートで掛け率を作り参考にするんですね。 ありがとうございます。列を増やすのは問題ないので試してみたいと思います。
お礼
ありがとうございます。 IF関数で作るとこのようになるんですね。昨日自分でも作ってみたのですが、エラーになるので困っていて。()の使い方など参考になりました。 作ってみます。