- ベストアンサー
関数を教えてください
シート1(採点表) 年齢|回数|得点 --------------- | シート2(データ) 年齢|1|2|3|4 ----------------------- 得点| 100 | このような表を作成しています. シート1で回数入力したら、シート2の得点データ(年齢によって配点が違う)からシート1の得点を表示するようにするにはどうしたら良いのでしょうか? LOOKUPやIFでいろいろ試しましたがどうも上手くいきません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
補足有難うございます。 この問題は難しいと思いました。まだ解答も出ていないようです。 取りあえず解答を載せますが、条件次第では潰れます。 例を挙げますのでフォローして理解してください。 (1)例としてA1からD6まで下記表を入力してください。 (Sheet2へ) 点/年 年20 年21 年22以下略 100 6 5 4 99 5 4 3 98 4 3 2 97 3 2 1 96 2 1 0 (計数は回数) 以下略 (2)ここが問題含み(手数がかかる)なんですが。 B2:B6に「年20」という名前をつける。 C2:C6に「年21」という名前をつける。 D2:D6に「年22」という名前をつける。 やり方は範囲指定し,挿入-名前-定義-OKです。 面倒だが本番では全年齢について行うこと。 (3)A9(何処でも良いが仮に)年齢を入れる。数字 22ではなく「年22」と入れる。 (ちょっと常識と違うが本件やむを得ない点です) (4)B9(何処でも良いが仮に)に回数「4」(数字)を入 れる。 (5)B11(何処でも良いが仮に)に式「=MATCH(B9,INDIRECT(A9),-1)」を 入れる。点数は降順(上から下へ大->小)となって 入ると仮定(仮定1)。その場合最後の引数は-1です。 (6)B12(何処でも良いが仮に)に式「 =INDEX(A2:A7,B11)」を入れる。 (7)やり方A9セルに「年20」とか入力。 B9セルに回数「3」とか入力。 点数がB11に出る。 ●質問ではB9、B11やB12セルはSheet1にあるようだがこれはSheet2!○○と変えれば良い。解くのに精一杯で、そこまで気を配れなくてすみません。 ●(難しいと思った点) 関数はほとんど1つの値を返すものです。例えば22歳の列D2:D6を返す関数があれば良いが、見つけられなかった。 たまたま雑誌の解説に「Indirect(名前)」の例が目にとまり 使いました。 本件質問の「表」で上記「仮定1」も成り立つかどうか、心配です。また重複値(同回数)があるのかも心配です。 ●もっとスマートな解答が出ることを待ちます。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
下記のようなことですか。問題の内容を補足お願いします。 シート1(採点表) 年齢|回数|得点 --------------- 入力|入力|X 済? 「回数数字」を入力すると(<-シート1で回数入力したら、)「シート2」の第1行の年齢を索引 しないと、第2行めの配点?得点?は判らないのだが、その年齢は 何処より採ってくるのか。回数を入力する瞬間には、シート1のA列に年齢は入力済みですか?最終目的はシート1のXのセルに値をセットすることですね。? シート2(データ) |1 |2 |3 |4| <---年齢---> ----------------------- 100 |95 | 90|85 |・・・・ (年齢別満点表?年齢別得点表?得点となっているが 配点のこと)年齢別にハンディキャップをつけている と言うことですか。 なぜ年齢で満点・配点が異なるのですか。得点ですか? ●配点・得点?は年齢と関係するとして、回数とは関係しないのですか。回数数字を入力は、あくまで本件得点索引の「きっかけ」であると言うことですか。あるいは「回数倍」をして上記「x」のセルにセットするのですか。回数と得点の関係がわからない。
補足
imogasiさん、ありがとうございます。 質問の仕方が悪くてすみません(^_^;) 流れはこうです。 1 シート1で回数と年齢を入力します。 氏名|教えて具 年齢|21歳 回数|4回 得点|? 2 シート2で作成した年齢に応ずる点数表から得点を検索します。 20歳|21歳|22歳 100点| 6回| 5回|4回 99点| 5回| 4回|3回 98点| 4回| 3回|2回 3 シート1の表に得点を出力します。 ※ 点数表を別シートにしているのは、表が膨大なためです。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
これはvlookup関数で最後のパラメータをTRUEにする数少ない例ですね。 懸垂か反復横とびか知りませんけど、そういう類のことが何回出来るかで年齢に応じた 得点をつけていくわけですが、シート2の表が 年齢\回数 1 2 3 0 15 20 23 10 10 15 10 20 5 10 13 30 10 15 18 40 15 20 22 50 20 25 28 こんな感じで、シート1の得点欄を =vlookup(年齢,sheet2!表,回数+1,TRUE) というふうにしておけば、各年代の得点が得られるはずです。こいつの弱点は表の回数 の列を1回ずつ全部書かなくちゃいけないところですね。そこで、表の上の部分を 年齢\回数 0 2 5 2 3 4 0 0 15 23 のように拡張します。10才未満が2回未満なら0点、2~4回なら15点、というわけですね。 で、得点欄は =vlookup(年齢,sheet2!表,hlookup(回数,sheet2!表,2,TRUE),TRUE) とします。これでだいたいOKなはずです。
お礼
grumpy_the_dwarfさん、ありがとうございます。 =vlookup(年齢,sheet2!表,hlookup(回数,sheet2!表,2,TRUE),TRUE) でチャレンジしてみます
- k-nksm
- ベストアンサー率22% (15/66)
index関数で問題があるのでしょうか? index(sheet!2得点セル範囲,sheet1!回数セル) でいいんじゃないでしょうか。 いまひとつ、シート1と2の関係がよくわかりませんが。
お礼
k-nksmさん、ありがとうございました。 index(sheet!2得点セル範囲,sheet1!回数セル) でチャレンジしてみます。
お礼
imogasiさん、懇切な解答ありがとうございました。 こんなに複雑になるなんて想像もしなませんでした。 やってみます! シート2の得点表のレイアウトにも問題があるのかもしれません。 できましたら報告させていただきます!