• ベストアンサー

【エクセル】スコア表から対応するポイントを表示したい

お世話になります。 このようなスコアに対するポイント表があります。 スコアポイント表 スコア      ポイント 500以上      → 50ポイント 500未満400以上 → 40ポイント 400未満300以上 → 30ポイント 300未満200以上 → 20ポイント 200未満100以上 → 10ポイント 100未満      → 5ポイント 各個人ごとのスコアから、このスコアポイント表を対応づけて ポイントを表示したいのですが、IF関数を使うととても入れ子が 多くなってしまいいい数式にならないため、わかりやすく表示する 方法がないかと思い質問いたしました。 よろしくお願いいたします。

noname#79106
noname#79106

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO1です。以下の表を作成して、次の関数で如何でしょうか。 =if(a1<>"",VLOOKUP(a1,C1:D7,2,TRUE),"") 尚、その他ポイントバリエーションは表を調整して下さい。 C  D 1  5 100 10 200 20 300 30 400 40 500 45 525 50

noname#79106
質問者

お礼

回答ありがとうございます。 大変ありがたい回答なのですが、スコアは 200ぴったりなどではなく、212や345などハンパな数字があります。 この場合ですとどうしたらよいでしょうか・・・ よろしければ再度回答よろしくお願いいたします。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

>200ぴったりなどではなく、212や345などハンパな数字があります。 VLOOKUP関数TRUE型を知らないための、反応です。 VLOOKUP関数には2種類あります。第4引数で、TRUEか、FALSEで指定します。 TRUE型  1つの範囲からーー>1つの値(範囲はいくつあっても良いが)を導き出す関数 FALSE型  コードから名前を割り出すときのように、1対1の対応を表から検索します。 本件は前者です。表のつくり方に注意を要します。表の行の筋の作り方で、以下、以上、こえる、未満などの場合の数字のいれ方です。 これらは昇順、降順など整然と並んでいる必要があります。 FALSE型はその必要がありません。 ーー LOOKUPと付いた関数はVLOOKUP,HLOOKUP、LOOKUP2種の4種類あります。 有名有用な関数で、しばらくエクセルを使っておれば、知らないのは、不思議なくらいです。ビジネス向けの雑誌○経PC21など毎月のように解説が出てきます。 WEB照会しても腐るほど出てきます。VLOOKUPが一番使われるが、WEBか関数の本よく読んでください。

noname#79106
質問者

お礼

回答ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

NO3です。 実際に試して頂ければ、分かりますが提案の関数は、検索値 が見つからない場合には、検索値未満で最も大きい値が使用されます。 従って、212なら200、345なら300の行を抽出しますので問題ありません。

noname#79106
質問者

お礼

回答ありがとうございます。 実際試してみました。ちゃんと期待通りの結果が得られました。 ネットで検索してみましたが、VLOOKUP関数のTRUE型について、 知らずに勘違いしていたことがわかりました。 今回でとても勉強になりました。ありがとうございました。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.4

規則性が有るか無いかで、 それに見合う式を、コンパクトに考える訳で・・・ 最初の質問中に、それらの条件を全て提示された方が良いです。 =IF(A1="","",Lookup(A1,{0,100,200,300,400,500,525,550},{5,10,20,30,40,45,50,50}))

noname#79106
質問者

お礼

回答ありがとうございます。 そうですね、今度の質問から気をつけて条件を全て提示するように します。 ありがとうございました。

  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.2

Vlookup関数ではどうでしょう。A1に数値を入れてB1にポイントを出すとして、E1から縦にE6まで順に1,100,200,300,400,500といれF1から縦にF6まで5,10,20,30,40,50と入れておきB1に=VLOOKUP(A1,E1:F6,2)とします。ポイントが変わったら、ポイントを入れ替えるだけでできますが。これは検索値が表にない場合は検索値未満の最大値が検索になるので、スコアの基準が変わっても応用できます。ただし、昇順に(小さい順)に並んでいないとダメですが。

noname#79106
質問者

お礼

回答ありがとうございます。 なるほど。Vlookup関数を使うのですね。 大変ありがたい回答なのですが、スコアは 200ぴったりなどではなく、212や345などハンパな数字があります。 この場合ですとどうしたらよいでしょうか・・・ よろしければ再度回答よろしくお願いいたします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 =IF(A1<>"",IF(A1<100,5,MIN(50,FLOOR(A1/10,10))),"")

noname#79106
質問者

お礼

回答ありがとうございます。 ご回答の関数でできました。すごい高度な方法ですね。 ですが、実際のスコア表はもうちょっと複雑で・・ 24単位で表が変化するのです。 549~525→50 524~500→45 のようにです。 例が悪くて申し訳ないです。 もしおわかりになりましたら、またの回答よろしくお願い いたします。

関連するQ&A

  • エクセル 表の値を拾ってセルに返す計算式って?

    下記のような表があり、表の値をとあるセルに返す方法を検討しています。 0~ 30--------23,000 30~ 100--------31,000 100~ 200--------44,000 200~ 500--------60,000 500~1000-------102,000 ある個数を計測し、その値をあるセルに入力した時に上記の表を元に金額を表示したいと 考えています。 当初はif関数にて、30未満なら23,000円、そうでなくて100未満なら31,000円、・・・ と設定してみたのですが、区分が実はもっと有り(20階層くらい)とてもif関数だけでは 対応し切れなさそうなので諦めました。 何かいい設定方法はないのでしょうか? 範囲で特定する方法で何かいい数式ってないのでしょうか?

  • エクセルIF関数の入れ子について

    こんにちはエクセルIF関数の入れ子について 労働力1000以上     ***     500以上1000未満  **     500未満        * と表示しようと思い、セルに =IF(D4>=IF(D4>=500,"**","*")=1000,"***")  ※D4は労働力の数値 と入力したらFALSEが表示されました。 入れ子をしなければ表示が正常にされるのですが 入れ子をするとFALSEになります。 原因がわからないので教えてください。

  • エクセルの関数について

    数値が 1.2未満だと40 1.2以上1.5未満だと50 1.5以上だと60と表示させたいのです。 if関数を使えばできそうな気がするのですが、 もっとスマートな関数or機能はないでしょうか。 if関数しかないとしたら、その数式を教えてください。 よろしくお願いします。

  • エクセルでスコアランキング表作成について

    エクセルに関する質問です。 エクセルでスコアランキングを作成したいと考えております。 ゲームのスコアを入力していき、自動で順位順に並び替え、 パワーポイントにリンクで自動表示という流れを作りたいと考えております。 (1)入力sheet A列:順位 RANK関数(D列のスコアで順位) B列:参加者NO(固定001~) C列:ニックネーム(任意) D列:スコア 3-4桁の数値 (2)順位表sheet A列:順位 1~50 B列~D列→A列と入力sheetのA列を検索値として、参加者NO、ニックネーム、スコアを順位順に表示 という二つのsheetをつくっております。 スコアが同値で同じ順位が複数発生した際に、順位表sheetでN/Aになってしまいます。 同じスコアだった場合に、順位表に 4位、5位、5位、7位というように表示し、 同順位の人を表示する方法(vlookupですと、上の行しか読み込まれず・・・)が ありましたらご教示いただけないでしょうか? 御確認の程、よろしくお願いします。

  • EXCELのIF関数で

     こんにちは。教えて下さい  ある範囲(C4:L4とします)の中にある空白の数によって、一定の数を返すような数式を作りたいのです。空白の数が、0で2、1で3、2で4、3で5、4で6、5で8、6で11、7で15、8で20、9で30、10で0という具合で、規則性はありません。IF関数とCOUNTBLANK関数を使って、次のような入れ子構造の数式を作りました。  =IF(COUNTBLANK(C4:L4)=0,2,IF(COUNTBLANK(C4:L4)=1,3,IF(COUNTBLANK(C4:L4)=2,4,IF(COUNTBLANK(C4:L4)・・・中略・・・IF(COUNTBLANK(C4:L4)=9,30,0))))))))))  最後の閉じ括弧の数は正確ではありませんが(汗)、実際にはきちんと合わせました。  ところがエラーが出てしまうのです。入れ子の階層数に制限があるのでしょうか? それとも他に原因が?  そもそもこんな長い数式ではなく、もっとうまい方法があるような気もするのですが・・・。  よろしくお願いいたします。

  • この関数に対して、多すぎる引数・・・の対応

    どなたかご教授下さい。 ゴルフコンペの成績表を作り続けています。 参加者の成績(スコア)を入力したセルをCOUNTで参加回数として表示、平均スコアをAVERAGEで表示させていました。 30回を超えて「この関数に対して、多すぎる引数が入力されています」が出たので参加回数は =COUNT(●●10、・・・●●30)+COUNT(●●40、・・・●●50)で30回以上表示できるようになり解消できたのですが、平均スコア(AVERAGE)の数式変更ができません。 今は=AVERAGE(●●10、・・・●●30)で●●31から対応できなくなりました。 この場合どのような式を当てはめればいいのでしょうか? 宜しくお願い致します。

  • EXCEL 2003にて予定表を作成しています。

    EXCEL 2003にて予定表を作成しています。 祝日を、VLOOKUP関数にて表示しました。 =VLOOKUP(A5,$F$5:$G$20,2,FALSE) エラー( #N/A )を非表示にするための関数を 入力するも、上手くいきません。図添付 =IF(ISERROR(VLOOKUP(A5,$F$5:$G$20,2,FALSE),"",VLOOKUP(A5,$F$5:$G$20,2,FALSE)) 「入力した数式は正しくありません」と表示されます。 正しい数式を教えてください。よろしくお願いします。

  • エクセルでのセル内の文字位置について

    いつもお世話になっております。 エクセル2007を使用しています。 関数による数式の算出結果が文字列の場合、セル内で左寄せ表示になってしまいます。右寄せにする方法はあるのでしょうか? 具体的には エクセルにより表を作成して、0表示をさせたくないのでオプションによりゼロ値は非表示にしています。ただ、0%の箇所は表示させたいので、IF関数を使って、 IF(○○=0,"0%",・・・)ってやって0%は表示させたのですが、セル内で左寄せになってしまいます。 こんな場合はどうするのがBESTでしょうか? どなたかよろしくお願いいたします。

  • エクセルでマイナス表示を0表示にしたい

    数式(IF関数入り)の結果、マイナス表示になるので、それを0表示にしたいのですが、わかりません。助けて下さい。お願いします。

  • エクセルで「●,●●●億●,●●●万●千円」と表示させるには?

    本件について、表示形式で対応できるのが理想なのですが、他の質問を見ていると「表示形式」での設定は無理のようで、数式での変換方法として下記のような回答を見つけました。しかし私の目的とする「●,●●●億●,●●●万●千円」ではなく「●●●億●●●●万円」とするものでした。 そこで、これを「●,●●●億●,●●●万●千円」となる数式に修正する方法を教えて下さい。関数に無知ですので・・・・。よろしくお願いします。 ----【他の回答】------------------------------------------------ 表示形式ではできないと思います。別のセルに数式なら可能ですが... A2=36701400000 なら B2=TEXT(TRUNC(A2/10^8),"#億;;")&TEXT(TRUNC(MOD(A2,10^8)/10^4),"#万;;")&IF(A2<10^4,"","円") A2=3670140 なら B2=TEXT(TRUNC(A2/10^4),"#億;;")&TEXT(TRUNC(MOD(A2,10^4)),"#万;;")&IF(A2<1,"","円") ----------------------------------------------------------------

専門家に質問してみよう