• ベストアンサー

文字を含んだIF関数

IF関数についての質問です A1を顧客名としB1を受注数量とし、単価を200円とします。 =B1*200 しかし A1が山田様と田中様であった場合、150円で販売 A1が鈴木様であった場合、180円で販売 つまり、特定のお客様だけ金額が変わるというものなのですが 文字を含んだIF関数を教えて頂きたいです。 教えて頂けませんでしょうか。 お願い致します。

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

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.4

こんにちは  最初、皆さんの回答で十分でσ(^_^;出る幕はないなと思いましたm(^^;m  が、自分が質問者さんの立場ならとふと思ったのですが… >A1が山田様と田中様であった場合、150円で販売 >A1が鈴木様であった場合、180円で販売  この例では2例(実はその他を含めて3例)ですけれど、σ(^_^;が自分の仕事だったら他のお客さも入る場合もあるでしょうし、その場合に簡単にエクセル表のメンテナンスが出来て仕事が楽になるように考えるでしょうって思いました。  その場合のキーワードは、「表引き」です(^^)  別のシートに「顧客名」と「単価」を「プライス表」(画像参照:シート名はプライス表)として作成し実行シートから顧客名で参照するのです(^^;  この場合の請求額のC1セルの式は例えば下記のようになります。  =$B1*VLOOKUP($A1,プライス表!$A:$B,2,FALSE)  顧客が増えたらプライス表にどんどん追加していけば良いです(^^)  しかし上記例では、顧客名が重複し違う単価があるとか、顧客名がプライス表に無かった場合のエラー処理は考えていませんm(__;m

その他の回答 (7)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.8

>つまり、特定のお客様だけ金額が変わるというものなのですが文字を含んだIF関数を教えて頂きたいです。 IF関数は条件分岐で処理方法が異なる演算を行うものです。 IF関数は入れ子構造で複雑な条件を目的の処理方法に導くことができる関数なので判断の論理を誤らないよう注意してください。 貼付画像の場合は次の数式のフローチャートです。 =IF(A1="鈴木",B1*180,IF(OR(A1="山田",A1="田中"),B1*150,B1*200)) A1の文字列が"鈴木"であるか、"山田"または"田中"であるかの判定を前後入れ替えても同じ結果になります。 =IF(OR(A1="山田",A1="田中"),B1*150,IF(A1="鈴木",B1*180,B1*200)) 目的の結果を得るにはIF関数を使わない方法もありますが質問はIF関数の使い方のようですから敢えてIF関数による方法を解説させて頂きました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 別の所に対応表を設ける様な事はせずに、関数の中に記述された文字列だけで処理を行う方法は、IF関数に限らず色々なものが考えられます。  以下は「山田」、「田中」、「鈴木」といった特定のお客様の人数を幾らでも増やす事が出来る方法の例です。(まだ他にも方法はあります) =IF(A1="","",INDEX({200,150,150,180},IFERROR(MATCH(A1,{"山田","田中","鈴木"},0),)+1)) =IF(A1="","",IFERROR(INDEX({150,150,180},MATCH(A1,{"山田","田中","鈴木"},0)),200)) =IF(A1="","",CHOOSE(IFERROR(MATCH(A1,{"山田","田中","鈴木"},0),)+1,200,150,150,180)) =IF(A1="","",IFERROR(CHOOSE(MATCH(A1,{"山田","田中","鈴木"},0),150,150,180),200)) =IFERROR(INDEX({"",150,150,180},MATCH(A1&"◆",{"◆","山田◆","田中◆","鈴木◆"},0)),200) =INDEX({200,"",150,150,180},IFERROR(MATCH(A1&"◆",{"◆","山田◆","田中◆","鈴木◆"},0),)+1) =IFERROR(CHOOSE(MATCH(A1&"◆",{"◆","山田◆","田中◆","鈴木◆"},0),"",150,150,180),200) =CHOOSE(IFERROR(MATCH(A1&"◆",{"◆","山田◆","田中◆","鈴木◆"},0),)+1,200,"",150,150,180) =IF(A1="","",ISERROR(MATCH(A1,{"山田","田中","鈴木"},0))*200+(A1="山田")*150+(A1="田中")*150+(A1="鈴木")*180) ※尚、上記の関数の中で「◆」の文字が使われている部分に関してですが、これは何も「◆」という記号ではなくとも、1つの関数の中で「◆」使われている箇所が、全て同じ文字になっていさえすれば、どの様な文字であっても構いません。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

A1*(200     -If(Iserror(Find("山田",$B$1)),0,50)     -If(Iserror(Find("田中",$B$1)),0,50)     -If(Iserror(Find("鈴木",$B$1)),0,20)) 如何でしょうか? Ifのブロックを増やせば いくらでも行けます よ

  • kamikami30
  • ベストアンサー率24% (812/3335)
回答No.5

教えたくないわけではないですが(既に回答もありますし)、この程度のことがわからないなら、一冊Excelの本を手元に用意した方が良いですよ。

noname#207306
質問者

お礼

無知で申し訳ございませんでした。 しかし私ほどの初心者ですと この機能がどこのページを見ればいいかさえ分からないものなので、ついつい訪ねてしまいました。 皆さん優しいので、本当にありがたいです^^

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

パターンが増えることも考慮してVLOOKUPを使う表を作成したほうがいいですね。 山田様 150 田中様 150 鈴木様 180 という表を作っておいて =B1*IFERROR(VLOOKUP(A1,表範囲,2,FALSE),200)

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

=IF(OR(A1="山田",A1="田中"),B1*150,IF(A1="鈴木",B1*180,B1*200))

回答No.1

  =if(or(A1="山田様",A1="田中様"),B1*150,if(A1="鈴木様",B1*180,B1*200)) どうですか?  

関連するQ&A