- ベストアンサー
Excelの&IFを使った複数条件指定について
- Excelで複数条件指定を行うためには、&IF関数を使用します。具体的な目的はサイズ毎の規定数を超えた時の数値を計算することです。
- S、M、L、XLの4種類があり、それぞれが入力できる最大規定数が決まっています。Sパッケージの場合、2を超えた場合は、2を引いた数値を返します。Mパッケージの場合、3を超えた場合は、3を引いた数値を返します。
- 例えば、A2が「Sパッケージ」で、B2が3の場合、2を引いた数値である1が返ります。他のパッケージについても同様の計算が行われます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答番号:ANo.3です。 >ISMAという関数が見あたりませんでした。 申し訳御座いません、ISNAの間違いです。 当方、現在は携帯電話からしか投稿出来ない状況であるため、数式をコピー&ペーストで投稿する事が困難で、手入力にて回答文を作成した際に、打ち間違えたものです。 御迷惑を御掛けして申し訳御座いませんでした。
その他の回答 (3)
- kagakusuki
- ベストアンサー率51% (2610/5101)
勝手に推測して、LやXLの場合も、上限値を超えた場合には、B2の値から上限値を差し引く数式にしています。 =IF(ISMA(MATCH(A2,{"Sパッケージ","Mパッケージ","Lパッケージ","XLパッケージ"},0)),0,IF(B2>LOOKUP(A2,{"Lパッケージ","Mパッケージ","Sパッケージ","XLパッケージ";4,3,2,5}),B2-LOOKUP(A2,{"Lパッケージ","Mパッケージ","Sパッケージ","XLパッケージ";4,3,2,5}),0)) 尚、適当な場所(例えばSheet2のA2~B5の範囲)にリストを作成する事が可能な場合は、以下の様にした方が、種類や上限値を変更する際に便利だと思います。 まず、Sheet2に次の様なリストを作成して下さい。 A列 B列 2行目 Sパッケージ 2 3行目 Mパッケージ 3 4行目 Lパッケージ 4 5行目 XLパッケージ 5 次に、結果を表示させる数式は、次の様に変更して下さい。 =IF(ISMA(MATCH(A2,Sheet2!$A$2:$A$5,0)),0,IF(B2>VLOOKUP(A2,Sheet2!$A$2:$B$5,2,0),B2-VLOOKUP(A2,Sheet2!$A$2:$B$5,2,0),0)) それから、御質問内容からは外れますが、A2セルには以下の操作を行って、入力規則のドロップダウンリストを設定しておけば、入力が楽になると思います。 (1)A2セルを選択 ↓ (2)メニューの[データ]ボタンをクリック ↓ (3)現れた選択肢の中にある「入力規則」をクリック ↓ (4)現れた「データの入力規則」ウィンドウの「設定」タグをクリック ↓ (5)「入力値の種類」欄をクリックして、現れた選択肢の中にある「リスト」をクリック ↓ (6)「元の値」欄をクリックしてから、「元の値」欄に次の数式を入力する =INDIRECT("Sheet2!A2:A"&MATCH(9^9,INDIRECT("Sheet2!B:B"))) ↓ (7)「データの入力規則」ウィンドウの[OK]ボタンをクリック
補足
回答いただき、誠にありがとうございます。 1点確認させていただきたいのですが、ISMAという関数が見あたりませんでした。。 すみません、ご確認いただけますと幸いです。 宜しくお願いいたします。
- mu2011
- ベストアンサー率38% (1910/4994)
ご質問内容が分かりません。 勝手に解釈していますので違っているようでしたら読み捨て下さい。 A列がパッケージ名、B列の入力数を各パッケージの最大規定数(Sは2、Mは3、Lは4、XLは5)で減じた値を計算したいという事ならば、以下の方法は如何でしょうか。 (1)別セルに仮にE1に「Sパッケージ」、F1に「2」以下M~XLも同様に4行x2列の表を作成します (2)C2に=IF(A2<>"",MAX(B2-VLOOKUP(A2,$E$1:$F$4,2,FALSE),0),"")を設定、下方向にコピー 因みにA列は入力規則→リストで入力選択できるようにしてあれば入力ミスがなくなりますのでご一考下さい。
お礼
mu2011様 無事に表を完成させることができました。 色々とご支援いただき、誠にありがとうございました。 また宜しくお願いいたします。
補足
先ずはじめに、僕の質問内容が不十分で申し訳ありませんでした。 Sパッケージ、Mパッケージ、Lパッケージ、XLパッケージの4種類があり、 それぞれが入力できる最大規定数が決まってます。 ※ S(1~2)、M(1~3)、L(1~4)、XL(1~5) そこで、以下のような条件をつけております。 パッケージ名称、入力数値にて、パッケージ○、且つx~yが規定数を超えた(←超えた数値をxとする)場合、 x-yの値を返す、といった計算式を作りたいと考えてます。 パッケージが4種類あるため、IF関数で作ることができないのではと考えてます。 そこで、先ずはIFで作成することができるのか、できない場合はどのような手段があるのか、 再度ご教授いただけないでしょうか。
- aokii
- ベストアンサー率23% (5210/22063)
期待値が何か解りませんが、以下のような感じでしょうか。 =IF(AND(A2="Sパッケージ",B2>2),B2-2,IF(AND(A2="Mパッケージ",B2>2),B2-3,0))
お礼
aokii様 無事に表を完成させることができました。 こちらの質問内容の記載ミスによりご迷惑おかけして申し訳ありませんでした。 またこの場でお会いすることがございました際は、 宜しくお願いいたします。
補足
先ずはじめに、僕の質問内容が不十分で申し訳ありませんでした。 Sパッケージ、Mパッケージ、Lパッケージ、XLパッケージの4種類があり、 それぞれが入力できる最大規定数が決まってます。 ※ S(1~2)、M(1~3)、L(1~4)、XL(1~5) そこで、以下のような条件をつけております。 パッケージ名称、入力数値にて、パッケージ○、且つx~yが規定数を超えた(←超えた数値をxとする)場合、 x-yの値を返す、といった計算式を作りたいと考えてます。 パッケージが4種類あるため、IF関数で作ることができないのではと考えてます。 そこで、先ずはIFで作成することができるのか、できない場合はどのような手段があるのか、 再度ご教授いただけないでしょうか。
お礼
kagakusuki様 とんでもございません、お忙しい中ご回答いただき、誠にありがとうございました。 いただいた回答で無事に式を完成させることができました。 また機会がありましたら宜しくお願いいたします!!