- ベストアンサー
エクセルの関数について
ある条件によって判定をさせたいと思っています。 0~10の時・・・・A 11~20の時・・・B 21~30の時・・・C 31~40の時・・・D 41~50の時・・・E 51~60の時・・・F 61~70の時・・・G 71~80の時・・・H 81~90の時・・・I 91~100の時・・J ある素点に対してこのような判定をさせたいとき、どのような数式を入れればよいでしょうか。すごく複雑なので困っています。よろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
#9の方ご指摘ありがとうございました。そのとおりです。 0のばあいマイナス1となり1をたしても0ですからchooseでは 選択できません。 それを回避するために絶対値の関数ABSをいれて修正しました。 これで0から100までできると思いますが、どうでしょうか。 CHOOSE(INT(ABS(A1-1)/10)+1,"A","B","C","D","E","F","G","H","I","J")
その他の回答 (9)
- ja7awu
- ベストアンサー率62% (292/464)
> CHOOSE(INT((A1-1)/10)+1,"A","B","C","D","E","F","G","H","I","J") これも 0 のとき、"A" にはならないのでは? エラーになるかと・・・
お礼
いろいろな条件で検証して頂きありがとうございます。エクセルの数式が一つでないこと、あらゆる条件を考えないといけないことがわかりました。 考えをいただき、本当にありがとうございました。
- mochi-mochi
- ベストアンサー率56% (123/217)
#7ですが、式で1を減算するのを忘れていました。 これでは10のときにBと表示されてしまいます。 訂正のように1を引いてから10で割ってください。 CHOOSE(INT((A1-1)/10)+1,"A","B","C","D","E","F","G","H","I","J") お手数かけてすみません。
お礼
再度のご回答ありがとうございました。こちらこそ、お手数をおかけしてすみませんでした。
- mochi-mochi
- ベストアンサー率56% (123/217)
次のような関数をつくってはどうでしょうか CHOOSE(INT(A1/10)+1,"A","B","C","D","E","F","G","H","I","J") A1にたとえば23という数値がはいっているとすると それを10で割って2.3になりそれをintで整数化して2とします、 それに1を加えて3としてABC..以下の選択肢の3番目をえらびます。 あとはこの関数を必要なだけコピーすればいいと思います。
お礼
数式がシンプルになってきましたね。表計算なので当たり前なのですが、数式がある程度組み立てられる人は、すごく有利だということも分かってきました。自分にその能力がないので本当にありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
#4と同じVLOOKUPを使うのですが、下記と比べてください。 何かが判るでしょう。 (テーブル) テーブルで C1:D10に 0 A 11 B 21 C 31 D 41 E 51 F 61 G 71 H 81 I 91 J をいれます。 C1の0や下1桁が0でなく1になっていることに注意。 (関数式) B1に=VLOOKUP(A1,$C$1:$D$10,2,TRUE)といれ下へ複写します。 $を付けること。Trueを指定すること。 (テスト)A列に数を入れた時の結果 1 A 11 B 21 C 31 D 41 E 51 F 61 G 71 H 81 I 91 J 101 J 0 A 10 A 20 B 30 C 40 D 50 E 60 F 70 G 80 H 90 I 100 J 101以上のチェックは省略。 未入力セルに対して#N/Aがでますが、防止策は敢えて 省略。(OKWEBに何回も質問が出ています。) A列データは点数と考えて、整数値と仮定している。
お礼
ご回答、ありがとうございました。いろいろとチェックまでしていただきすみませんでした。
- h_azu
- ベストアンサー率0% (0/1)
if関数を使用してはいかがでしょう。 ヘルプにif関数の使用例として平均点を5段階にランク分けするものが載っています(私のはOffice97なのでそれ以降のバージョンに記載があるかどうかは不明)。 ただ、ここまで多重化できるかはわかりませんが・・・
お礼
ヘルプに載っているのですね。簡単でしたね。ありがとうございました。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
> > =CHAR(65+INT((素点-1)/10)) > > これですと、0 のとき、@ になりませんか? そうですね。御指摘感謝。 vlookupでヤルなら、A1からA11までを0,10,20,30,…,100にして B1からB11までをA,A,B,C,…,Jとし、 =vlookup(素点, A1:B11, 2 TRUE) ですね。
お礼
だんだんと考え方が複雑になってきましたね。だだ単に数値を入れるだけでは、いけないのですね。あらゆる場合の対応を考えないといけないことも分かってきました。ありがとうございました。
- ja7awu
- ベストアンサー率62% (292/464)
> =CHAR(65+INT((素点-1)/10)) これですと、0 のとき、@ になりませんか? 例えば、セルA1に素点があるとして =CHAR(65+INT((A1-(A1>1))/10)) でどうですか。
お礼
だんだんと複雑になってきましたが、方法は、いくつかあるようですね。ありがとうございました。
- sero
- ベストアンサー率47% (916/1944)
小数点を考慮しないで済むなら、例えばA1からA101まで0から100を入力。 B1からB11にA、B12からB21にBという風にしておきVLOOKUPで拾った方が 動作も軽いのでは? =VLOOKUP(対象セル,$A$1:$B$101,2,0)
お礼
小数点の考慮もあるわけですね。ありがとうございました。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
=CHAR(65+INT((素点-1)/10))
お礼
早速のご回答ありがとうございます。表で試してみたいと思います。
お礼
再度、ご回答していただきありがとうございました。自分では、分からない領域まで考えていただき感謝しています。今までは、関数をそのまま使っていました。条件に合う、合わないというところまで考えていませんでした。すごく奥が深くて難しいなりに楽しくなってきました。本当にありがとうございました。