• ベストアンサー

関数を教えてください

シート1(採点表) 年齢|回数|得点 --------------- | シート2(データ) 年齢|1|2|3|4  ----------------------- 得点| 100 | このような表を作成しています. シート1で回数入力したら、シート2の得点データ(年齢によって配点が違う)からシート1の得点を表示するようにするにはどうしたら良いのでしょうか? LOOKUPやIFでいろいろ試しましたがどうも上手くいきません。  

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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」も成り立つかどうか、心配です。また重複値(同回数)があるのかも心配です。 ●もっとスマートな解答が出ることを待ちます。

CPT_KOALA
質問者

お礼

imogasiさん、懇切な解答ありがとうございました。 こんなに複雑になるなんて想像もしなませんでした。 やってみます! シート2の得点表のレイアウトにも問題があるのかもしれません。 できましたら報告させていただきます!

その他の回答 (3)

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

下記のようなことですか。問題の内容を補足お願いします。 シート1(採点表) 年齢|回数|得点 --------------- 入力|入力|X 済? 「回数数字」を入力すると(<-シート1で回数入力したら、)「シート2」の第1行の年齢を索引 しないと、第2行めの配点?得点?は判らないのだが、その年齢は 何処より採ってくるのか。回数を入力する瞬間には、シート1のA列に年齢は入力済みですか?最終目的はシート1のXのセルに値をセットすることですね。? シート2(データ) |1 |2 |3 |4| <---年齢---> ----------------------- 100 |95 | 90|85 |・・・・    (年齢別満点表?年齢別得点表?得点となっているが     配点のこと)年齢別にハンディキャップをつけている     と言うことですか。 なぜ年齢で満点・配点が異なるのですか。得点ですか? ●配点・得点?は年齢と関係するとして、回数とは関係しないのですか。回数数字を入力は、あくまで本件得点索引の「きっかけ」であると言うことですか。あるいは「回数倍」をして上記「x」のセルにセットするのですか。回数と得点の関係がわからない。

CPT_KOALA
質問者

補足

imogasiさん、ありがとうございます。 質問の仕方が悪くてすみません(^_^;) 流れはこうです。 1 シート1で回数と年齢を入力します。   氏名|教えて具   年齢|21歳   回数|4回   得点|? 2 シート2で作成した年齢に応ずる点数表から得点を検索します。   20歳|21歳|22歳 100点| 6回| 5回|4回 99点| 5回| 4回|3回 98点| 4回| 3回|2回 3 シート1の表に得点を出力します。 ※ 点数表を別シートにしているのは、表が膨大なためです。

回答No.2

これは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なはずです。

CPT_KOALA
質問者

お礼

grumpy_the_dwarfさん、ありがとうございます。 =vlookup(年齢,sheet2!表,hlookup(回数,sheet2!表,2,TRUE),TRUE) でチャレンジしてみます

  • k-nksm
  • ベストアンサー率22% (15/66)
回答No.1

index関数で問題があるのでしょうか? index(sheet!2得点セル範囲,sheet1!回数セル) でいいんじゃないでしょうか。 いまひとつ、シート1と2の関係がよくわかりませんが。

CPT_KOALA
質問者

お礼

k-nksmさん、ありがとうございました。 index(sheet!2得点セル範囲,sheet1!回数セル) でチャレンジしてみます。

関連するQ&A