• ベストアンサー

EXCEL 3つ以上の条件による表引き

ご覧いただきありがとうございます。EXCELでの表引きについて、お知恵をお貸しください。 通常、表引きは縦・横2つのキーを指定して行うものだと思うのですが、3つ以上の条件による表引きは可能でしょうか。具体的には以下のような表引きを行いたいのです。 次のような表があるものとしてください。    A  B   C    D   E    F   G 1    学年  01   01   02   02   03 2   クラス   01   01   01   01   01 3   番号   01   02   01   02   01 4 A校     792  766   26   284  570 5 B校     446  424   23   147  537 6 C校     757  745   12    85  270 7 8 A校 9   01 10  01 11  01 12  792 このような表で、A8~A11セルに学校名、学年、クラス、出席番号を入れるとA12セルに対応するデータが表示されるようにしたいのです。 A12セルに『{=INDEX(C4:G6,MATCH(A8,A4:A6,0),MATCH(A11,C3:G3,0))*((C1:G1=$A$9)*(C2:G2=$A$10)*(C3:G3=$A$11))}』 という式を入れてみたところ、A9~A11セルに01を入力したときだけデータが表示されますが、それ以外の場合はゼロが表示されます。良い関数式がお分かりになられる方がいらっしゃいましたら、どうかご教示ください。 別にシートを用意して、文字列の結合で横方向のキーを010101、010102…と加工した上で表引きするのが順当な方法だとは思うのですが、できればそういう中間的なシートは使わずに、もとのデータから直接表引きしたいと思っています。よろしくお願いいたします。 OS WindowsXP Home EXCEL 2002

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

  • ベストアンサー
  • sige1701
  • ベストアンサー率28% (74/260)
回答No.3

こんな感じでいいかな =SUMPRODUCT((C1:G1=A9)*(C2:G2=A10)*(C3:G3=A11)*(A4:A6=A8),C4:G6)

akeem2003
質問者

お礼

とてもすっきりとした式で私の希望をかなえてくださり、ありがとうございます。 SUMPRODUCT関数がこのように表引きに使えるとはまったく思いもよりませんでしたので、感動しました。 この式を縦横にコピーすれば、一度に複数のセルを参照表示することもできますね。いろいろと応用できそうな気がします。ありがとうございました。

その他の回答 (2)

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.2

行と列を入れ替えた表なら思いつきましたが・・・だめですか? 「行列を入れ替えて貼り付け」なら作り変えることができます。   A   B   C   D   E   F   G 1 No  学年 クラス 番号 A校  B校  C校 2 1   1   1   1  792  446  757 3 2   1   1   2  766  424  745 4 3   2   1   1   26   23   12 5 4   2   1   2  284  147   85 6 5   3   1   1  570  537  270 7 8 学年 クラス 番号 学校 9  2   1   2  B校 10 147  上記のような表だと、A10に =INDEX(E2:G6,DGET(A1:D6,A1,A8:C9),MATCH(D9,E1:G1)) と入力すればできました。

akeem2003
質問者

お礼

ご回答ありがとうございます。 データベース関数はなんとなく敷居が高い感じがして使ったことがなかったのですが、お教えいただいた式を試してみて、便利に使えるということが分かりました。 また、同じデータでも行列を入れ替えることで取り回しやすくなることがあるということも実感しました。 お示しいただいた解決方法は今回の私の希望とは少し違いましたが、今後 きっと活用させていただく場面があると思います。ありがとうございました。

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.1

A11=INDEX(B4:F6,MATCH(A8,A4:A6,0),IF(AND(A9=B1,A10=B2,A11=B3),1,IF(AND(A9=C1,A10=C2,A11=C3),2,IF(AND(A9=D1,A10=D2,A11=D3),3,IF(AND(A9=E1,A10=E2,A11=E3),4,IF(AND(A9=F1,A10=F2,A11=F3),5,""))))))

akeem2003
質問者

お礼

ご回答ありがとうございます。 論理式を使わなければいけないと思いこんでいたのですが、このように条件分岐で解決できるのですね。たいへん勉強になりました。ありがとうございました。

関連するQ&A

  • エクセルの表引き

    こんにちは いつもお世話になっています。 Sheet1に以下の表があります。 すみません、表示がうまくいかず、A列には文字列、B列には数字が入ります。 A列に数字があるように表示されていましたらB列に表示されているものとしてみてください。 Sheet1 A        B 和歌山    2 愛知    3 東京    1 大阪    2 栃木    1 石川    3 A列のデータに重複はなく、B列のデータには重複があります。 B列の数字を検索値として振り分けるような形でA列の値を表引きしたいです。 表引き先は Sheet2のB列の複数セルに1が入力済みの状態。 Sheet3のB列の複数セルに2が入力済みの状態。 Sheet4のB列の複数セルに3が入力済みの状態。 例えば Sheet2 A        B    1    1    1    1    1 Sheet3 A        B    2    2    2    2    2 Sheet4 A        B    3    3    3    3    3 以上の各シートが以下のようになるようにしたいです。 Sheet2 A     B 東京 1 栃木 1 1 1 1 Sheet3 A     B 和歌山 2 大阪 2 2 2 2 Sheet4 A     B 愛知 3 石川 3 3 3 3 Sheet2-4のA列に各B列のデータに一致する値をSheet1から表引きしたいです。例えばSheet2に関して、東京、栃木と出てしまったら後のA列は空欄になるようにしたいです。A列数字が表示されていたらB列にあるものとしてください。 フィルタとかでの手作業でなく、何とか関数で持ってこられないでしょうか。 作業列とか必要でしたら教えてください。 わかりにくい表現ですみません。 よろしくお願いします。

  • エクセル2003で表引き

    こんにちは いつもお世話になっています。 エクセル2003で表引き Sheet1のB列に都道府県名があります。 青森 秋田 岩手 愛媛 鹿児島 Sheet2のK1セルにSheet1のB1データを引いてくるために =Sheet1!B1 という関数を入れました。 Sheet2のL1セルにSheet1のB2を引いてきたいのですがフィルハンドルでのコピーに失敗します。 どのような関数を使えば横にコピーできるようになるでしょうか。Sheet2のM1,N1に同様にコピーしていきたいのです。 縦のデータを横にしたいのではなく、関数で引っ張りたいのです。 よろしくお願いします。

  • エクセルの表引き?

    こんにちは いつもお世話になっています エクセルの表引きについて教えてください。 実は表引きといえるかどうかわからないので、できるか、できないかだけでも知りたいです。 sheet1に次のデータがあります。 A     B     C 1     秋田    a 2     愛知    a 3     石川    a 4     愛媛    b 5     大分    b 6     鹿児島   b 7     香川    c 8     熊本    c A列は連番とは限りません、重複データはありません。 C列でグループ分けしてあり、第一条件でソートしてあります。 sheet2ではA列に10行ごとに黒枠罫線がひいてあるだけで、ほかにデータはありません。 この枠線の中にsheet1のC列のグループごとにA列のデータを振り分けたいのです。 sheet1のC列は昇順でソートしてありますのでsheet2へも、その順番で各枠線内の上から入力させたいです。 sheet2のA列へはC列のa,b,cの各データの個数より余分に枠罫線がひかれてあるので、入りきらないことはありません。 つまり、 sheet2に A 1 2 3 7行分空白(ここまで枠罫線) 4 5 6 7行分空白(ここまで枠罫線) 7 8 8行分空白(ここまで枠罫線) と入力させたいのです。 関数とか表引きではできないとすると、他の方法はあるでしょうか。 条件付書式でもできるでしょうか。 わかりづらい表現で申し訳ないですが、よろしくお願いします。

  • エクセルの表引き関数

    こんにちは いつもお世話になっています。 エクセルで右列のデータを検索値にして表引きする方法を教えてください。 sheet1に以下のデータ A     B 1     秋田 2     愛知 3     石川 4     愛媛 sheet2に以下のデータ A     B       愛媛       石川       秋田       愛知 sheet2のA列にsheet1のA列のデータを表引きする方法を教えてください。 (sheet1のA列は連番とは限りません。) 作業列を作らない方法を探しています。 よろしくお願いします。

  • エクセルと表引き

    エクセル初心者です。 エクセル2003で下記画像のような2枚のシートを作りたいのです。 上段画像のシート1は作成済です。 それぞれ勤務地の希望表なのですが ○印だけのセルを探して、その項目名(東京・大阪・神奈川) をセルに表引きしたいのですが。 よろしくお願いします。

  • 表引き

    表引き関数  再質問です 仮に A    B  C   D   E  A1    2  1   1   A2    4  2   1 A3    5  3   2  A4    6  4   4 A5    1  5   6 A6    2  6   2 BとCに2列の表があります E1には =vlookup(D1,B1:C6,2,false)の関数の式を入れました B列はランダムな数値 C列は通し番号です いつもは B列に通し番号 C列はランダム数値なのでD列の数値に対してのE列の表引きは問題ないのですが 上のように B列がランダムな数値 C列が通し番号の場合 B列に同じ数値が複数個あるとき E列に返してくるのは その数値の最初のひとつだけ  上の仮の表 では D列の数値に対して E1は 以下     E列  5  5  1と6  2  4  1と6 ですが この1と6の6が表引き出来なんです この6も表引きしたいのです どうすればいいのでしょうか 他の関数と組み合わせるんでしょうか よろしくお願いします

  • エクセルで表引き

    こんにちは  エクセルで「4月」シート、「5月」シートがあります。 「4月」シートのA,B,C列(A3からデータ)にデータが入っています。A列には数字(ランダムだが50行目までは重複なし、51行目から重複あり。添付画像ではソートしてありますが、実際はランダムです)、B列には文字(すべて重複なし)、C列にはローマ数字(I、II、III、IV)がランダムに入っています。 「5月」シートのA3セルに「4月」シートのA列のデータを引いてくる関数を教えてください。  つまり、「4月」シートのA列はA3からA50行目まで1から48の数字が重複せずに入力されていますが、51行目以降は、また、1から始まる数字が入力されています。今回、A列から引きたい行はA3からA50までです。また、「4月」シートのB列の文字列は今回の関数には関係しないかもしれません。  条件としては、例えば、「4月」シートのC列に「 I 」がある行のA列のデータ(数字)を引いてこられる関数を「5月」シートのA3からA20にフィルハンドルで入れたいです。データが入りきるように余裕を持たせています。「5月」シートのデータを参照する必要はなく、単純にC列に I がある行のA列のデータを引いてくるだけです。A21からA40にはC列に II がある行のA列のデータを引いてくる関数を入れたいです。以下同じ要領でA41から60にはC列に III があるもの、A61から80にはC列に IV があるものを引きたいです。 わかりにくい説明ですみません。 応用の効く初心者用の関数だと助かります。

  • エクセル データを時間帯別にとりこむ方法

    たびたび申し訳ございません。 エクセルの時間の表示が式にうまくのらないので投稿しています。 まず、sheet1には時間が入力されています。 これを時間帯別の表であるsheet2に引っ張ろうとしています。 sheet1 A 17:58 18:32 18:50 sheet2 A B C 17:30 18:00 1 18:00 18:30 0 18:30 19:00 2 それで、sheet2のC1に以下の式を入力してもsheet1のデータ数が出ません。 =COUNTIFS("sheet1",>=A1,"sheet1",<B1) それで以下のようにセル名ではなく時刻を入力するとデータ数が出てきます。 =COUNTIFS($G$3:$G$24,">=17:30",$G$3:$G$24,"<18:00") セルの書式設定が関係しているのでしょうか。 ご多忙の中申し訳ございませんがよろしくお願いします。

  • エクセルで表引き

    こんにちは いつもお世話になっています。  Windows7、エクセル2007です。  初心者のため以下の関数が可能かどうかも判断できませんが教えてください。 勝手ながら、作業列を使う場合はD列以降にお願いします。ピボットテーブルは不要です。 A列に1からの連番。B列に名前(表引きに直接関係はありませんが)。C列に記号が3種類あります。 C列の記号ごとにA列の番号をA16セル以下に引いてくる関数を教えてください。 具体的にはJPGをご参照ください。 A16~19にC列の記号Iを持つA2~11の番号 A20~23にC列の記号IIを持つA2~11の番号 A24~27にC列の記号IIIを持つA2~11の番号 実際はA列の連番は50ぐらいあります。 引いてくる先のセルA16以下のセルは余裕を持たせてあります。 A16以下に検索値のようなものはありませんが大丈夫でしょうか。 厚かましいお願いですが応用が利く、わかりやすい関数も希望しております。 よろしくお願いします。

  • エクセル2003 表引き

    こんにちは いつもお世話になっています。 エクセル2003を使っています。 Sheet1のA列に連番数字、B列に都道府県名があります。 1 青森 2 秋田 3 岩手 4 愛媛 5 鹿児島 Sheet2のA1にSheet1のB1データを引いてくるために =Sheet1!B1 という関数を入れました。 Sheet2のB1にはSheet1のB2を引いてきたいのですがフィルハンドルでのコピーに失敗します。 どのような関数を使えば横にコピーできるようになるでしょうか。 縦のデータを横にしたいのではなく、関数で引っ張りたいのです。 よろしくお願いします。

専門家に質問してみよう