Excel関数でパターン判定する方法

このQ&Aのポイント
  • Excel関数を使用して、複数のパターンで自動判定することが可能です。
  • 各パターンごとに判定条件を設定し、合計値と比較することで判定します。
  • エラー値の場合には別の値を表示し、判定条件に基づいて結果を出力します。
回答を見る
  • ベストアンサー

Excel関数で、こんなことできますか?

Excel関数で、こんなことできますか? 『沢山のパターンの中から、自動判定したい。』 (1)~(4)の4パターンで自動判定するよう設定したいのですが、 Excel関数を使って、できるのでしょうか? もし無理であれば、(1)、(2)のみとかだけでもできればありたがたいです。 ちなみに(1)のみの場合は、IF関数で次のように設定しました。 =IF(B6>49,"S",IF(B6>34,"A",IF(B6>24,"B",IF(B6>14,"C","D")))) この他に合計値を出す範囲内のセル( 例えばB3やB4 )に 「N」という表示があった場合には、(2)~(4)の判定をさせたいです。 (エラー値となる場合にはISERRORで”N”と表示するようにしています。) (1)エラーがない場合 判定   合計  S  45以上50以下  A  35以上45未満  B  25以上35未満  C  15以上25未満  D  10以上15未満 (2)B3=Nの場合 判定  合計  S  35以上40以下 A  25以上35未満  B  15以上25未満  C  10以上15未満  D   5以上10未満 (3)B4=Nの場合 判定  合計  S  25以上30以下  A  20以上25未満  B  15以上20未満  C  10以上15未満  D  5以上10未満 (4)B3,B4ともNの場合 判定 合計  S  20以上25以下  A  15以上20未満  B  10以上15未満  C   5以上10未満  D   2以上 5未満 Excel関数でどの関数を使えるのかも判りませんし、マクロも判りません。 普段は似たものを検索してコピペしていますが、複雑なものは判りません。 どなたか、お判りでしたら、お教え下さい。 よろしくお願いいたします。

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

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

 今仮に、合計値を出す範囲内のセルが存在するシートがSheet1であるとします。  まず、別のシート(ここでは仮にSheet2とします)に次の様なリストを作成して下さい。 A3セルに D A4セルに C A5セルに B A6セルに A A7セルに S A8セルに S B1セルに N無し B2セルに 0 B3セルに 10 B4セルに 15 B5セルに 25 B6セルに 35 B7セルに 45 B8セルに 50 C1セルに B3=N C2セルに 1 C3セルに 5 C4セルに 10 C5セルに 15 C6セルに 25 C7セルに 35 C8セルに 40 D1セルに B4=N D2セルに 2 D3セルに 5 D4セルに 10 D5セルに 15 D6セルに 20 D7セルに 25 D8セルに 30 E1セルに B3=N,B4=N E2セルに 3 E3セルに 2 E4セルに 5 E5セルに 10 E6セルに 15 E7セルに 20 E8セルに 25  尚、上記のリストにおいて、Sheet2の1行目と2行目に入力する内容は、数式等の入力時に解り易くするためのもので、計算に必要があるものではありませんから、面倒であれば省略されても構いません。  それから、Sheet1の判定結果を表示させるセルに次の数式を入力して下さい。 =IF(OR($B$6<OFFSET(Sheet2!$B$3,,($B$3="N")+($B$4="N")*2),$B$6>OFFSET(Sheet2!$B$8,,($B$3="N")+($B$4="N")*2)),"N",INDEX(Sheet2!$A$3:$A$8,MATCH($B$6,OFFSET(Sheet2!$B$3:$B$8,,($B$3="N")+($B$4="N")*2))))  以上で完成です。  因みに、合計する範囲がB3~B4の様にセルの個数が2個ではなく、n個に増えた場合には、 Sheet2のリストの列数を 1+2^n 本にまで増設して、 2列目には「N無し」(10進数の「2-2」=2進数の「0」)のデーター 3列目には「1個目のセルがN」(10進数の「3-2」=2進数の「1」)のデーター 4列目には「2個目のセルがN」(10進数の「4-2」=2進数の「10」)のデーター 5列目には「2個目と1個目のセルがN」(10進数の「5-2」=2進数の「11」)のデーター 6列目には「3個目のセルがN」(10進数の「6-2」=2進数の「100」)のデーター 7列目には「3個目と1個目のセルがN」(10進数の「7-2」=2進数の「101」)のデーター 8列目には「3個目と2個目のセルがN」(10進数の「8-2」=2進数の「110」)のデーター 9列目には「3個目と2個目と1個目のセルがN」(10進数の「9-2」=2進数の「111」)のデーター 10列目には「4個目のセルがN」(10進数の「10-2」=2進数の「1000」)のデーター 11列目には「4個目と1個目のセルがN」(10進数の「11-2」=2進数の「1001」)のデーター 12列目には「4個目と2個目のセルがN」(10進数の「12-2」=2進数の「1010」)のデーター 13列目には「4個目と2個目と1個目のセルがN」(10進数の「13-2」=2進数の「1011」)のデーター 14列目には「4個目と3個目のセルがN」(10進数の「14-2」=2進数の「1100」)のデーター 15列目には「4個目と3個目と1個目のセルがN」(10進数の「15-2」=2進数の「1101」)のデーター 16列目には「4個目と3個目と2個目のセルがN」(10進数の「16-2」=2進数の「1110」)のデーター 17列目には「4個目と3個目と2個目と1個目のセルがN」(10進数の「17-1」=2進数の「1111」)のデーター   ・   ・   ・   ・ (2^n+1)列目には「n個目と(n-1)個目と(n-2)個目と・・・・2個目と1個目のセルがN」(10進数の「(2^n+1)-1」=2進数の「1111・・・1{←1がn回繰り返される}」)のデーター という具合に入力して行き 判定結果を表示させるセルに入力する数式は、数式中の ($B$3="N")+($B$4="N")*2 の部分を ($B$3="N")+($B$4="N")*2+($B$5="N")*4+($B$5="N")*8・・・・・・+($B$(n+2)="N")*2^(n-1) というパターンで変更して下さい。

02momo
質問者

お礼

ご回答ありがとうございます。 セルの位置と、内容をすごく丁寧に書いて下さったので、 判りやすかったです。 早速試してみたいと思います。 お忙しいところ、貴重なお時間を頂きましてありがとうございました!!

その他の回答 (1)

  • m_and_dmp
  • ベストアンサー率54% (974/1797)
回答No.1

添付画像のように(1)~(4)の4つのケースをエクセルシート上に展開しておきます。 (4)のケースの右にケースによって異なる評価値を抽出するエリア(黄で塗りつぶしたエリア)を設けます。 計算をシンプルにする、あるエラーの時(E1)はたとえばB3に"N"ではなく、数字の2, 別ののエラーの時(E2)はたとえばB4に"N"ではなく数字の4と表示するように変更します。エラーではないときはどちらも数字の0とします。 ”N"のままでも処理できますが、数字の方が1手順少なくなります。 そうすると、ケース(1)は、E1+E2=0、ケース(2)は、E1+E2=2、 ケース(3)は、E1+E2=4、ケース(4)は、E1+E2=6 となります。 OFFSET関数の中でこの数字を使って、4つのケースの中から数値を抽出します。 添付図では、ケース(1)の左の行の45という数値のセルは、E14です。ここがOFFSET関数の基準になります。 抽出エリアの数式は左側、タイトルの下から、 =OFFSET(E$14,0,M$12,1,1) =OFFSET(E$14,1,M$12,1,1) =OFFSET(E$14,2,M$12,1,1) =OFFSET(E$14,3,M$12,1,1) 左側は、 =OFFSET(F$14,0,N$12,1,1) =OFFSET(F$14,1,N$12,1,1) =OFFSET(F$14,2,N$12,1,1) =OFFSET(F$14,3,N$12,1,1) となります。 式の意味を最初の式で説明しますと、基準となるセルF$14から0行下へ、セルM$12の数値分だけ右へずれた行の数値を拾ってきます。詳しくはOFFSET関数のヘルプで調べて下さい。 水色に塗ったエリアは、評価結果を計算するエリアです。 得点は、手入力、 E1+E2は、エラーコードの合計ですからどこかのセルに0,2または、0,4と出てくるとして、 その和の計算式を入れておきます。(現在は手入力) 評価結果の式はつぎのとおりです。(自動改行されてしまいますが、1本の式です。) =IF(L21>N14,"TOO HIGH",IF(L21>M14-1,"S",IF(L21>M15-1,"A",IF(L21>M16-1,"B",IF(L21>M17-1,"C",IF(L21>M18-1,"D",IF(L21<N18,"TOO LOW"))))))) LOW ENDより小さい場合、TOO LOWと、HIGH ENDより大きい場合は、TOO HIGH、と表示する部分を追加してあります。 あらかじめケース分けしておけば、数式は、02momoさんが、作った式ひとつで、すむのです。 このように抽出用のエリアを設けると、IF文の中に数値を持ち込まないですむので、評価値を変更するのが簡単です。(テーブルの数値を変更するだけ) ただし、注意しなければならないのは、ケーステーブルの構成が変わるとエラーコードを変えてやる必要があります。サンプルは一ケースが2行構成で、隙間なしに並べられています。間に空白行を入れると計算結果が違ってきますので、とりあえずはプロトタイプで試してください。

02momo
質問者

お礼

ありがとうございます!! 添付画像まで付けて頂き、判りやすいです。 早速試してみようと思います。 貴重なお時間を頂き、丁寧にご説明頂きましてありがとうございました。

関連するQ&A

  • excel関数について

    教えてください。 100~300 → A 300~500 → B 500~700 → C 700~900 → D (セル内の数値が、100以上、300未満の場合は『A』と表示させる) (セル内の数値が、300以上、500未満の場合は『B』と表示させる) (セル内の数値が、500以上、700未満の場合は『C』と表示させる) (セル内の数値が、700以上、900未満の場合は『D』と表示させる) 上記のようにしたいんですが、どの関数を使えばいいんでしょうか。

  • Excel:関数の使い方

    宜しくお願い致します。 画像を添付しますので、どうやれば出来るのかを教えてください。 【前】 この表は、名前(B列)・得点(C列)が出ています。 この表を使ってやりたいことは・・・ 【後】 得点(C列)が    ●50未満はC    ●50以上75未満はB    ●75以上はA で判定。 さらにその結果を・・・・ 上の行から判定を見ていき、G4からG8は連続してC判定で、その群の最低点がどこかを示す。 (連続した判定の中の、最低得点を示したいのです) これは無理でしょうか? 判定はIF文で出来ます。 最低得点は、MIN関数を上手く使えば示せるのでしょうか。 教えてください。宜しくお願い致します。

  • IF関数の条件がわかりません

    ExcelのIF関数の条件でわからないので教えてください。 「6%以下かつ50,000以下だと判定A、6%以下かつ30,000以上50,000未満は判定B、それ以外はC」 問題の解答ですと、VLOOKUPを使用するみたいですが、検定でわざわざ参照する表を使用しないといけないので、IF関数のみで出来るならその回答を教えていただけますか? よろしくお願いします。

  • Excel2003で条件が複雑な場合、どの関数が適してますか?

    お世話になります。 Excel2003を使用しております。 関数の初心者なので、ご教授頂けると幸いです。 今回は質問を2つさせて下さい。 【質問1】 C23:1    D23:200 C24:5    D24:500 C25:7    D25:600 C26:2    D26:300 C27:4    D27:400 C28:5    D28:100 C29:8    D29:500 C40:6未満   D40:合計数 C41:6以上   D41:合計数 上記のような場合で C23~C29の条件が「6未満」と「6以上」で分けて それぞれの条件時の合計を出したいと考えております。 例) 6以上 → 600 + 500 = 1100 COUNT関数とIF関数を組み合わせるのでしょうか? 【質問2】 質問1の「6未満」を赤色セル、「6以上」を青色セル、とした場合 色で判断して、それぞれの合計数を出すことは可能でしょうか? 赤 → C23、C24、C26、C27、C28 青 → C25、C29 例) 青セル合計 → 600 + 500 = 1100 color関数とかあるみたいなのですが、それを使うのでしょうか? 恐縮ですが宜しくお願いします。 以上です。

  • Excel関数で出した時間を判定したい

    「就業時間基本5:30」なら「A」判定 「就業時間基本2:45」以上「5:29」なら「B」判定 「就業時間基本1:00」以上「2:44」ならば「C」判定 「修行時間基本1:00」未満なら「空白」 と判定させたいです。「就業時間基本」はワークシート関数で求めています。 例えば、2月1日から2月28日まで、VBAを使って「判定する」ならどうすれば良いでしょうか? 基本時間 If 関数で2:45 以上 5:29 「B」 判定としようとすると、おそらくは「シリアル値の問題」で簡単に「B」判定とは出てくれません。 どなたか、正しい判定方法を教えてください。

  • EXCEで複数条件でそれぞれ引数を返す関数は?

    EXCEL初心者です。最近よくIF関数を活用してますが,次のような場合はどうすれば良いでしょうか。 「計算式の答えが,Aの場合はaを,Bの場合はbを,Cの場合はcを,Dの場合はdを……それぞれ返す」という条件を付けたいのですが,可能でしょうか。 IF関数では3つのパターンまでは【=IF(X>0,a,IF(X=0,b,c))】のように可能だと思うのですが,条件が4つ以上のパターンになると,どうすれば良いか分かりません。 IF関数でなく,もっと良い方式もあるのでしょうか。 どうぞ,御教示ください。

  • Excel関数について

    Excelの関数についてご教授ください。 IF関数の使い方です。IF関数は、=IF(条件式,値1,値2)のように表示し、条件式が満たされている場合は値1を表示し、満たされていない場合は値2を表示することとなっています。 私がやりたいのは、少し複雑で次のような関数を作りたいです。 (1)A未満の値の場合、Xを表示する (2)A以上B未満の場合、Yを表示する (3)B以上場合、Zを表示する。 と条件を細かくし、表示する値も複数としたいです。 このような関数は、Excel関数機能を用いて出来ますでしょうか? ご教授いただければ幸いです。

  • EXCEL2003で判定式について教えてください。

    仮にA1に12.9、B1に12、C1に11.4、D1に12.5とあるとして F1にはA1-B1の値を、G1にはB1-C1の値、H1にはC1-D1の値を それぞれ10倍して(小数点以下を無くし見易くする為に) 表示するものとします。 その後F1~H1の3つの値(+9、+6、-11)に対し、+5以上が 一つでもあるならなら「A」、+1~+4のみは「B」、 +の値が一つもなく0以下なら「C」と判定させたいのです。 そこで当初J1で =IF(F1:H1>=5,"A",IF(F1:H1<=0,"C","B")) としたところ複数のセルに対してはできないようなので 一旦J1でMAXを使い(+5以上か)を判定し、L1に =IF(J1>=5,"A",IF(J1<=0,"C","B")) と二つのセル、二つの式で結果的には出来たのですが、 なんとかすっきりと一つの関数式で判定させることは 出来ないでしょうか?

  • 合否判定の関数入力のしかた

    どうしてもわからず教えていただきたいのですが、 A列氏名、B列国語、C列数学、D列英語、E列合計点数、F列合否判定 の表の場合で 2行目A2(田中一郎)、B2(50)、C2(70)、D2(85)、E2(205)、F2(合否判定) のF2を求める合否判定の条件として、 合計点数が200点以上なら合格、ただし国語が50点以下があれば不合格、でも英語が80点以上であれば合格とする。 というように、IF関数の条件を重ねたいのですができないのでしょうか? orとか&を重ね合わせる関数がわかりません。よろしくお願いいたします。

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

専門家に質問してみよう