- ベストアンサー
EXCEL関数:複数の離れた列から抽出する方法
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! すでに色々回答が出ていますが・・・ 一例です。 ↓の画像で上側がSheet1でSheet2に表示するようにします。 Sheet1はA~I列までのデータとしていますので、実状に合わせて範囲は変更してみてください。 Sheet2のB2セルに =IF($A2="","",IF(COUNTIF(Sheet1!$A:$I,$A2),INDEX(Sheet1!$A$1:$I$100,SUMPRODUCT((Sheet1!$A$1:$I$100=$A2)*ROW($A$1:$A$100)),SUMPRODUCT((Sheet1!$A$1:$I$100=$A2)*COLUMN($A$1:$I$1))+COLUMN(A1)),"該当データなし")) という数式を入れ、列・行方向にオートフィルでコピーすると 画像のような感じになります。m(_ _)m
その他の回答 (5)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
質問文の画像のとおりに 0 番台、100 番台、200 番台、…というふうに番号の列が分かれている場合は、次式でもいいですね。INDEX 関数の第 4 引数は、領域を番号で選択します。No.2 さんの CHOOSE と似たようなものです。 =vlookup(a2,index((sheet1!a:c,sheet1!d:f,sheet1!g:i),,,int(a2/100)+1),3,) もっとも、いちばん一般的な方法は、No.4 さんのおっしゃるとおり、検索の元データを 3 列にすることだと思います。人に見せるなど、何らかの理由で 9 列にしたいなら、9 列の表のシートを 3 列のシートとは別に用意し、3 列から 9 列に参照する VLOOKUP を 9 列のセルに記入すればいいだけですね。
お礼
回答有難う御座います。 色々試してみます。
- nobita925
- ベストアンサー率62% (5/8)
複雑な操作がしたくないなら、入力・確認用にだけシート(1)の様に作成して、検索用にABC列だけのシートを作るのがもっとも簡単。 関数の使い方では無いですが・・・
お礼
回答有難う御座います。 確かにABC列だけが簡単ですが、 数がかなり有る為、3列での作業は厳しく…。 色々試してみます。
- tsubuyuki
- ベストアンサー率45% (699/1545)
「知っている(であろう)関数だけでわかりやすく」を求めるなら、 例えば「会社名」欄(シート2のB2セル)なら =IF(COUNTIF(シート1!A:A,A2)=0,"",VLOOKUP(A2,シート1!$A:$C,3,FALSE))& IF(COUNTIF(シート1!D:D,A2)=0,"",VLOOKUP(A2,シート1!$D:$F,3,FALSE))& IF(COUNTIF(シート1!G:G,A2)=0,"",VLOOKUP(A2,シート1!$G:$I,3,FALSE)) ※便宜上、改行を入れていますが、実際は改行せずに続けて入力しましょう。 INDEX関数やMATCH関数を使って考えるのも手段ですが、 現在、ご自身が知っている関数だけで作るのもまた有効な手段です。 そちらの方が「あとでわかりやすい」でしょうから。 参考までにどうぞ。 好みの問題もあり、余計なお世話と言われるかもしれませんが、 シート名に「括弧や演算記号など」あるいは「丸数字のような環境依存文字」は 使わないようにしておく方が良いですよ。 前者は式が読みづらくなってしまうから、 後者はパソコンが変わると上手く動かなくなる可能性があるから、です。
お礼
回答有難う御座います。 色々試してみます。
- keithin
- ベストアンサー率66% (5278/7941)
ご利用のエクセルのバージョンが不明のご相談なので、Excel2007以降を使い =IFERROR(VLOOKUP(A2,Sheet1!A:C,2,FALSE),"")&IFERROR(VLOOKUP(A2,Sheet1!D:F,2,FALSE),"")&IFERROR(VLOOKUP(A2,Sheet1!G:I,2,FALSE),"") のように計算するのが一番わかりやすい方法です。 ちなみにご相談は「例えば」でしょうからダメなんでしょうけど、仮に「実際にそうである」なら =VLOOKUP(A2,CHOOSE(INT(A2/100)+1,Sheet1!A:C,Sheet1!D:F,Sheet1!G:I),2,FALSE) と言った具合に、一つにまとめる工夫ができるかも?しれません。
お礼
回答有難う御座います。 色々試してみます。
- Cupper-2
- ベストアンサー率29% (1342/4565)
横に離れているなら普通にVLOOKUP関数でOK。 検索する列を変えれば良いだけです。 検索する範囲をOFFSET関数で指定して列方向をCOLUMNS関数で指定するとか工夫してみましょう。
お礼
回答有難う御座います。 色々試してみます。
お礼
回答有難う御座います。 色々試してみます。