• ベストアンサー

EXCEL:条件を満たすものはAと表示する場合は?

何度もすみません! A列は70~100、B列は30~50は、評価A。 A列は70~100でも、B列が10~29は、評価Aマイナス。 A列は70~100でも、B列が0~9は、評価B A列が50~69、B列は10~29は、評価B。 ・・というものすごくパターンのある条件を指定してC列に表示することはできるでしょうか? 方法、関数、教えてください。 宜しくお願いします。

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

  • ベストアンサー
  • kumagoro-
  • ベストアンサー率57% (36/63)
回答No.3

マクロを使うのが一番分かりやすいと思いますが、 ワークシート関数だけという事ならば以下のようにかなり長くなってしまいます。 「C1」 =IF(AND(A1>=70,A1<=100),IF(AND(B1>=30,B1<=50),"A",IF(AND(B1>=10,B1<=29),"A-",IF(AND(B1>=0,B1<=9),"B",""))),IF(AND(A1>=50,A1<=69),IF(AND(B1>=10,B1<=29),"B",""),"")) 他の列を利用しても構わないならば以下のような方法もあります。 「E1」 =IF(AND(A1>=70,A1<=100),10,IF(AND(A1>=50,A1<=69),20,0)) 「F1」 =IF(AND(B1>=30,B1<=50),1,IF(AND(B1>=10,B1<=29),2,IF(AND(B1>=0,B1<=9),3,0))) 「C1」 =IF(E1+F1=11,"A",IF(E1+F1=12,"A-",IF(E1+F1=13,"B",IF(E1+F1=22,"B","")))) ただ、どちらもあまり良いとは言えませんが。。。

whoops101
質問者

お礼

回答ありがとうございます。 長いですけど、シンプルでわかりやすく、有り難いです(^^)。 他の列を利用する方法もやってみます。 ありがとうございました。

その他の回答 (2)

回答No.2

まず最初に > A列は70~100、B列は30~50は、評価A。 > A列は70~100でも、B列が10~29は、評価Aマイナス。 > A列は70~100でも、B列が0~9は、評価B > A列が50~69、B列は10~29は、評価B。 これをキレイに表にまとめます。この例では縦軸にAの成績、横軸にBの成績です。       0    10    30       2     3     4  0    D     C-    C 10    C-    C     B- 30    C     B-    B 50    B-    B     A- 70    B     A-    A この表の範囲を「table」という名前にしたとして、ついでにA列に「A_point」 B列に「B_point」と命名すると、C列を =VLOOKUP(A_point, table, HLOOKUP(B_point,table,2,TRUE),TRUE) とすればオッケーです。まずは条件を表にまとめるのがコツですね。

whoops101
質問者

お礼

回答ありがとうございます。 なるほど!条件を表にまとめるんですね。 とってもわかりやすい説明ありがとうございます!

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

ユーザー定義関数を作ればいいと思います。たくさんの条件のようなので、 Select Case を使って順に書いていけば、見た目にもきれいなコーディングになり分かりやすいと思います。 下に例を書いてみました。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュールで標準モジュールを挿入し、そこに書きます。 下は、A列の条件を先に書いて、次にB列の条件を書いています。参考にして増やしていけば、どんなに条件が多くても判定できます。 Select Case True にしてあるので、<Case 条件> の条件が成立したら次の行が実行されます。 使い方は、A2、B2に点数があれば、C2に  =Hyouka(A2,B2) とします。詳しくは、Helpなどを参照して下さい。 Function Hyouka(pointA As Integer, pointB As Integer)   Select Case True     Case 70 <= pointA And pointA <= 100       Select Case True         Case 30 <= pointB And pointB <= 50           Hyouka = "A"         Case 10 <= pointB And pointB <= 29           Hyouka = "A-"         Case 0 <= pointB And pointB <= 9           Hyouka = "B"         Case Else           Hyouka = "Error"       End Select     Case 50 <= pointA And pointA <= 69       Select Case True         Case 10 <= pointB And pointB <= 29           Hyouka = "B"         'Case ・・・・・・・・ 別の条件(B列)         '  Hyouka = "B"         'Case ・・・・・・・・ 別の条件(B列)         '  Hyouka = "B"         Case Else           Hyouka = "Error"       End Select     'Case ・・・・・・・・ 別の条件(A列)       '       '  上と同様に別の条件(B列)を書く       '     'Case ・・・・・・・・ 別の条件(A列)       '       '  上と同様に別の条件(B列)を書く       '     Case Else       Hyouka = "Error"   End Select End Function

whoops101
質問者

お礼

迅速な回答ありがとうございます。 ス・・・スゴイことになってる・・。 チャレンジしてみます!! 本当にありがとうございました。

関連するQ&A