エクセルで表引き

このQ&Aのポイント
  • 初心者でも使えるエクセルの表引き関数について教えてください。
  • エクセルの表引きで異なる記号ごとに連番を取得する方法を教えてください。
  • エクセルの表引きで大量のデータを検索する際に使える関数について教えてください。
回答を見る
  • ベストアンサー

エクセルで表引き

こんにちは いつもお世話になっています。  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以下に検索値のようなものはありませんが大丈夫でしょうか。 厚かましいお願いですが応用が利く、わかりやすい関数も希望しております。 よろしくお願いします。

  • 5goma
  • お礼率82% (265/321)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

あれ?ローマ数字のI,II,IIIですか?それともアルファベットのアイを並べてI,II,IIIですか? アルファベットなら =IFERROR(INDEX($A$1:$A$11,MATCH("I"&ROW(A1),D:D,0)),"") と =IFERROR(INDEX($A$1:$A$11,MATCH("II"&ROW(A1),D:D,0)),"") と =IFERROR(INDEX($A$1:$A$11,MATCH("III"&ROW(A1),D:D,0)),"") です。 カッコが誤記てましたね。大変失礼しました。

5goma
質問者

お礼

keithin 様 ありがとうございました。お蔭様で解決しました。 ローマ数字でした。 度重ねての不手際をお詫び申し上げます。 簡単で恐縮ですが、お礼申し上げます。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

作業列を作らないで対応する場合には式がかなり複雑になりますし計算にも負担がかかります。 前回の式で列番号を一つ左にずらせばよいのではないですか。 作業列を作って対応するのがよいでしょう。 D1セルは空白のままでD2セルには次の式を入力して下方にドラッグコピーします。 =IF(C2="","",C2&COUNTIF(C$2:C2,C2)) A16セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>COUNTA(D$1:D$11),"",IF(COUNTIF(D$1:D$11,IF(ROUNDUP(ROW(A1)/4,0)=1,"I"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=2,"II"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=3,"III"&MOD(ROW(A1)-1,4)+1,0))))=0,"",INDEX(A$1:A$11,MATCH(IF(ROUNDUP(ROW(A1)/4,0)=1,"I"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=2,"II"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=3,"III"&MOD(ROW(A1)-1,4)+1,0))),D$1:D$11,0))))

5goma
質問者

お礼

KURUMITO 様 ありがとうございました。お蔭様で解決しました。 C列の「記号」がいけなかったのですね。ローマ数字でした。 keithin 様にご指摘いただく前に気付くべきでした。 変更したところ無事成功しました。 度重ねての不手際をお詫びいたします。 大切に使わせていただきます。 簡単で恐縮ですが、お礼申し上げます。

5goma
質問者

補足

KURUMITO 様 重ねてご回答いただき誠にありがとうございます。 どうもうまく動かないようなので助けていただけないでしょうか。 「D1セルは空白のままでD2セルには次の式を入力して下方にドラッグコピーします。 =IF(C2="","",C2&COUNTIF(C$2:C2,C2))」 この部分は成功しており D2以下に III1 II1 I1 III2 I2 III3 II2 I3 I4 II3 と表示されます。 「 A16セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>COUNTA(D$1:D$11),"",IF(COUNTIF(D$1:D$11,IF(ROUNDUP(ROW(A1)/4,0)=1,"I"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=2,"II"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=3,"III"&MOD(ROW(A1)-1,4)+1,0))))=0,"",INDEX(A$1:A$11,MATCH(IF(ROUNDUP(ROW(A1)/4,0)=1,"I"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=2,"II"&MOD(ROW(A1)-1,4)+1,IF(ROUNDUP(ROW(A1)/4,0)=3,"III"&MOD(ROW(A1)-1,4)+1,0))),D$1:D$11,0)))) 」 この部分で、セルは空欄になってしまいます。関数は入っていますが、エンターを押すと、何も表示されません。 私の単純なミスでしょうか。 教えていただければ幸いです。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

一番簡単で、最も高速にできる方法としては D2セルに =IF(C2="","",C2&COUNTIF($C$2:C2,C2)) と記入してD11までコピー貼り付けておきます。 Iの先頭のA16セルに =IFERROR(INDEX($A$1:$A$11,MATCH("I"&ROW(A1),D:D,0),"") としてIの領域にコピー(つまりA19までという意味ですよ) IIの先頭のA20セルには =IFERROR(INDEX($A$1:$A$11,MATCH("II"&ROW(A1),D:D,0),"") としてIIの領域にコピー IIIの先頭のA24セルには =IFERROR(INDEX($A$1:$A$11,MATCH("III"&ROW(A1),D:D,0),"") としてIIIの領域にコピーします。 #補足事項は前回と同じなので、もう一度読み返しておいてください。

5goma
質問者

補足

keithin 様 重ねてご回答いただき、誠にありがとうございます。 御教授いただいたとおりに処理したつもりですが、失敗しているので助けていただけないでしょうか。 「D2セルに =IF(C2="","",C2&COUNTIF($C$2:C2,C2)) と記入してD11までコピー貼り付けておきます」  この部分は成功しており、 D2以下に III1 II1 I1 III2 I2 III3 II2 I3 I4 II3 と表示されますが 「Iの先頭のA16セルに =IFERROR(INDEX($A$1:$A$11,MATCH("I"&ROW(A1),D:D,0),"") としてIの領域にコピー」  この部分で以下のエラーが出ます。 「数式中に対応するかっこがありません。かっこを追加して下さい。」 そこで、最後に「)」を入力すると 「この関数に対して少なすぎる引数が入力されています」 とエラーが出ます。 作業自体に問題があるのでしょうか。 しばらくお待ちいたしますので、教えて下さい。

関連するQ&A

  • エクセルで表引き

    こんにちは いつもお世話になっています。  Windows7 エクセル2007を使っています。  A列に1からの連番。B列に名前。C列に記号が3種類あります。 C列の記号の種類別にA列の番号をA16セル以下に引いてくる関数を教えてください。 具体的には A16~19にC列の記号Iを持つA2~11の番号 A20~23にC列の記号IIを持つA2~11の番号 A24~27にC列の記号IIIを持つA2~11の番号 以下のようにしたいです(表がずれてすみません。JPG添付しました)       A      B      C 1 No 名前 記号 2 1 新井 III 3 2 井上 II 4 3 上田 I 5 4 遠藤 III 6 5 小高 I 7 6 加藤 III 8 7 木村 II 9 8 工藤 I 10 9 近藤 I 11 10 佐藤 II 12 13 14 15 16 3 17 5 18 8 19 9 20 2 21 7 22 10 23 24 1 25 4 26 6 27 実際はA列の連番は50ぐらいあります。 引いてくる先のセルA16以下のセルは各グループに余裕を持たせてあります。 A16以下に検索値のようなものはありませんが大丈夫でしょうか。 厚かましいお願いですが、関数初学者のため高度な関数とともに、多少遅くなっても、応用が利くわかりやすい関数もご紹介いただければ助かるんですが。

  • エクセルで表引き

    こんにちは  エクセルで「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 があるものを引きたいです。 わかりにくい説明ですみません。 応用の効く初心者用の関数だと助かります。

  • 表引き

    表引き関数  再質問です 仮に 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も表引きしたいのです どうすればいいのでしょうか 他の関数と組み合わせるんでしょうか よろしくお願いします

  • エクセルの表引き?

    こんにちは いつもお世話になっています エクセルの表引きについて教えてください。 実は表引きといえるかどうかわからないので、できるか、できないかだけでも知りたいです。 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行分空白(ここまで枠罫線) と入力させたいのです。 関数とか表引きではできないとすると、他の方法はあるでしょうか。 条件付書式でもできるでしょうか。 わかりづらい表現で申し訳ないですが、よろしくお願いします。

  • 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

  • エクセルの表引き

    こんにちは いつもお世話になっています。 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列にあるものとしてください。 フィルタとかでの手作業でなく、何とか関数で持ってこられないでしょうか。 作業列とか必要でしたら教えてください。 わかりにくい表現ですみません。 よろしくお願いします。

  • エクセルの表引き関数

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

  • エクセル2003 表引き

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

  • 表引きの関数で困っています

    よろしくお願いします VLOOKUP関数ですが うまく表引きできません  2列の表でA列B列にデーターをいれた表があります D1には 式 =vlookup(D1,A1:B10,2,false))です D1にA1からB101での表を参照して 数値を引っ張っています いつもはうまくいきますが A1が 通し番号の場合はOKで ランダムな数値になりますと 引っ張れません 同じ数値が複数あると 最初のものだけ ひろいます 通し番号でなくて ランダムな数値でも 引っ張るにはどんな関数なんでしょうか サルにもわかるように やさしく 教えてください  

  • エクセル2003で表引き

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

専門家に質問してみよう