• ベストアンサー

関数を教えてください

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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/17068)
回答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

  • lookup関数で出来ませんか?

    EXcel2007のVlookup関数について教えて下さい。 添付の図(excel画面)の中で左側の資料がシート1にあり シート2のように(実際はもっとデータが多い) 整理をしたいのですがLOOKUP関数を考えても 出来ません。 資料(sheet1)も結果のマトリックス表(sheet2) もフォームを変えたくないのですが どのように入力すれば良いのでしょうか?

  • Excel2000の表を検索して、数字ではなくイメージデータを取り出すことができますか?

    こんなこと可能なのでしょうか? ”マスター”シートのA列にキーとなる番号1~3が入っており、 B列のそれぞれのセルにイメージデータが貼り付けられた表が 作成してあります。 この表を検索して、”完成表”シートのあるセルにキー番号を入力すると 対応するイメージデータが表示されるようにすることはできるのでしょうか? lookup関数を使ってみましたが、セルに入力されている数字や文字じゃないと 表示されません。 何か良い方法はありませんか?知恵を貸してください。

  • 表を作りたいです。

    VB.NETを初めてまだ間もないのですが、質問します。 ─────────── | 得点 | 結果 | [結果ボタン] ─────────── |    |    | ─────────── |    |    | ─────────── |    |    | ─────────── ↑のような表を作りたいです。 まず、得点、結果をそれぞれ縦一列ずつテキスト、又はリストボックスでそれぞれ作成します。 そこまではなんとか出来ました。 次に結果の欄に、結果ボタンを押したら合否を表示する様にIF文で作成したいです。 ですがここで分からないのですが、例えば得点の欄にいくつかのデータが入力されているとします。 そしたらIF文で作成する時、 IF 得点欄>60 みたいにしたら、得点欄すべての結果が認識されますよね? それを得点欄の一行一行それぞれのデータで結果を表示させたいのですが、無理でしょうか?

  • IF関数とLOOKUP関数の組み合わせについて

    指定したセルと等しい数値(文字列?)をLOOKUP関数を使って別シートのデータベースを検索させて、そのシートに無ければまた別のシートのデータベースを検索させるものを作りたいのですが上手くいきません。 指定したセルが空白なら空白を返すように次のような感じで作っています。 IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,A1:A15)<>A1,LOOKUP(A1,シート2!A1:A15,B1:B15),LOOKUP(A1,シート1!A1:A15,B1:B15))) VLOOKUP関数でもやってみたのですがこちらも上手くいきません。 IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,A1:A15)<>A1,VLOOKUP(A1,シート2!A1:B15,2,0),VLOOKUP(A1,シート1!A1:B15,2,0))) ご指摘いただければ嬉しいです。

  • エクセルの関数による条件分岐について

    単刀直入で申し訳ないですが、 Sheet1に下記の表を作成し、 青   100   B 青   300   B3 赤   200   A2 白   400   C5 青  (空セル) D 白   100   AA 白   100   B 青   400   D3 青   200  (空セル) Sheet2ではSheet1の列が『青』の行だけ上詰めで表示するような エクセル表を作成しようとしています。 具体的には、 『もしSheet1が青ならばSheet2で青の行を表示しかつ上に積める、もし青以外であればSheet2ではその行は表示しない、もしセルが空欄であればSheet2では「未記入」と表示させる。』 といった感じの動作をさせたいのです。 Sheet1の表に上記の値を入力すると、Sheet2では関数を用いて結果的に以下のような表が完成するようにしようと思っています。 青   100   B 青   300   B3 青   未記入  D 青   400   D3 青   200  未記入 ------------------------------------------------------------- また、これとは別なのですが、電話表を作成するにあたって、 SheetAに『名前、電話番号』の元データを入力しておき、 SheetBで名前を入力すると自動で電話番号が横のセルに表示され、 かつSheetAの元データにない電話番号が入力されると、「登録者なし」 と表示する。ようにするにはどのような方法があるでしょうか? AND関数で元データの人の名前を全通り入力し、そうでなければ「登録者なし」と表示するといったものを作成したのですが見た目が悪い上に、同じ箇所でAND関数を繰り返し使うには回数限度があるようで、登録者が多いと使えません。 一度にたくさんの質問で申し訳ないのですがもしよろしければご回答宜しくお願い致します。

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

    今までの質問で探してみたのですが、解決できなかったので質問させていただきます。 IF関数とVLOOKUP関数を使って表を作成しています。 例えば… IF(A1="","",VLOOKUP(A1,Sheet2!A1:E10,3,0) としました。 表示させたい列番号の値が何も入力されていないとき、「0」となります。 何も入力されていないのだから、何も表示されないようにしたいのです。 間に合わせで、スペースキーで空白を入力した所、「0」が消えて空白(何も表示されない)表示されました。 結構な量の資料ですと、間に合わせで空白を入力するのは大変です… どなたか詳しい方、回答お願いします。

  • INDIRECT、MATCH関数等の組み合わせ方

    入力フォームとして作成したシート(あああ)のデータを、シート(一覧表)に、計算式で自動的に並べる方法(参照する方法)を教えてください。(画像を添付しました。) 入力フォームは、実際は150枚ぐらいになります。一覧表も実際は数枚あります。 画像の「あああ」が入力フォーム、「一覧表」が一覧表です。 あああ、AAA、111、アアアなどは、すべて項目名です。 DATA1からDATA32、DATA100-103が、実際にデータが入る部分です。 例えばですが、入力フォーム(あああ)のセルC6に入力したDATA1が、一覧表のセルC3に入るように、C3に計算式を入れたいです。 1.シート名を計算式にいれるには、INDIRECT関数が使えるかと思います。 2.複数の条件(A列、B列、1行、2行)でセルを特定する関数がわかりません。 3.1.と2.を組み合わせると、同様な関数になるのか、わかりません。 DATAについては、ゼロはゼロ、無記入は無記入のまま一覧表に表示したいです。 よろしくお願いします。

  • Excelでシートをコピーすると関数が使えない

    Win7でoffice2010を使っています。 前任者が作ったファイルがあります。 A・Bというシートがあります。 Bのシートの表の端には=IF(Sheet2!D5='●● コード入力'!$B$14,1,"")という関数が入力されています。(100行ほど) AのシートのB14に数字を入力するとBシートのリストを参照してAのシートのG12~B14のシートに品名が入るように =LOOKUP(1,Sheet2!A:A,Sheet2!F:F)という関数が入っています。 このシートを同じブック内でコピーして使用すると関数が動きません。 IF関数内にシート名が入っているからだと思うのですが、これを作り直さずに手直しで修正することは可能でしょうか?

  • エクセルの関数で・・・

    状況としては入力用シートが複数と表示用シート1つあります。 入力用シートは元々あったもので日付毎に作成されています。 表示用シートにある表に入力用シートの各項目を反映させて表示したいです。 例えば 表示用シートのC1へ表示させたい入力シート名 3水 を入力します。 そうすると、表示用シートのA1に入力シート 3水 のA1が 同様に各項目がリンクするようにしたいと思いますが、うまくできる方法が思いつきません。解決方法を教えてください。お願いします。

  • Excelのユーザー定義関数

    シート名の一部とセルの値が一致したらLOOKUP関数をかえす関数を作成したいのですが… 例として。。。 シート名:20020301売上表、セルA1:2002/3/1の値があります。 シート名の"01"とA2の日付"1日"が一致したら、セルA2にLookup関数をかえす関数を作成したいのですが。。。 よろしくお願いします

専門家に質問してみよう