• 締切済み

エクセル(複数シート)からのデータ抽出の方法

初めての質問です。 分かりにくかったら、聞いてください。 画像も添付しましたのでご参照ください。 以下質問です。 エクセルのデータが2つのSheetに存在しています。 SheetA 下記のようなデータ一覧が存在しているとします。 列A    列B    列C NO.  地名 都道府県所在地 1   愛知     名古屋 2   大阪     大阪 3   福岡     福岡 ・ ・ ・ また、SheetBにSheetAの列AのNO.の項目の一部のデータのみが 存在しています。 列A NO. 3 ・ ・ SheetAのデータ一覧から、SheetBのNO.のデータ(行)のみを抽出して SheetCへ出力したいのですが、どのような方法が考えられるでしょうか。 実際のデータは500くらいの商品データのエクセルが1つあり(上でいうSheetB)、 メーカの商品データ約20000のデータ(上でいうSheetA)の中から、価格などを 常にメンテナンスしないといけないのですが、弊社で取り扱っている商品は 決まっていて(SheetB)NO.データは存在しているので、20000データから 抽出して弊社用の500データに絞り込めれば、作業がとても楽になります。 今は、1品ごとに検索しながら抽出しています。 1人で経営している小さな個人商店なので、こんなことも出来ないのですが、 ご回答のほど、どうぞよろしくお願いいたします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 SheetAやSheetBのデータを変更する際に、セルの切取りや削除、挿入、貼付けを行っても作動不良とはならず、且つ、SheetBのA列に入力されているものと同じデータが、SheetAのA列の中に存在しない場合には、「該当無し」と表示する方法です。  今仮に、「NO.」と入力するセルが、どのシートにおいてもA1セルであるものとします。  まず、SheetCのA1セルに次の数式を入力して下さい。 =IF(INDEX(SheetB!$A:$A,ROWS($1:1))="","",IF(COUNTIF(SheetA!$A:$A,INDEX(SheetB!$A:$A,ROWS($1:1))),VLOOKUP(INDEX(SheetB!$A:$A,ROWS($1:1)),SheetA!$A:A,COLUMNS(SheetA!$A:A),FALSE),"該当無し"))  次に、SheetCのA1セルをコピーして、SheetCにおいてデータを表示させる全てのセルを含むのに充分なだけ広いセル範囲に貼り付けて下さい。(例えば、下の添付画像の場合は、SheetAに3列×10行目の範囲にデータがあるので、SheetCのA1~C10を上回る範囲に貼り付けて下さい)

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

ごめんなさい。シートBのA列にNoを入力すればその横にデータが表示できるようにすればシートCは必要が無いように思いますね。先の回答はその場合の式です。

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

シートAでは1行目に項目名が有り2行目から下方にデータが入力されているとします。 シートBの1行目はシートAと同じ項目名が入力されているとします。項目名は必ず入力してください。 B2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグコピーします。 =IF(OR($A2="",B$1=""),"",IF(COUNTIF(SheetA!$A:$A,$A2)=0,"",IF(VLOOKUP($A2,SheetA!$A:$X,COLUMN(B2),FALSE)=0,"",VLOOKUP($A2,SheetA!$A:$X,COLUMN(B2),FALSE))))

  • ka28mi
  • ベストアンサー率41% (969/2315)
回答No.2

まず、SheetA、Bともに、A列のデータが数字であること、昇順で並んでいることが条件になります。 文字も混在していたり、並び方がランダムでも可能な方法はありますが、少し面倒になりますので、まずは今回の方法を理解されてから、色々とお調べになる方が理解しやすいと思います。 SheetCのA列にはSheetBのA列を参照します。「=Sheet2!A2」という数式をA2セルに入力するかマウスで指定するかして、ドラッグすると楽でしょうね。 SheetCのB列以降は、A列を検査値としてVLOOKUP関数で導出します。 B列には、=VLOOKUP(A2,Sheet1!A:C,2,FALSE) C列には、=VLOOKUP(A2,Sheet1!A:C,3,FALSE) と入力してみてください。 関数そのものの意味とか、それぞれの項目の意味は、VLOOLUPで検索されると、分かりやすいHPが色々と出てくると思います。意味が分からないと間違ったことをしてしまいがちですから、その点はご注意ください。 SheetAに入るべきデータが変わった時には、SheetAだけにデータを貼りつけると、関数などは変えなくても、変更後のデータを抽出します。 ただ、SheetCのデータを、他に色々と使われるなら、別のシートかファイルに値に直して貼り付けておく方が、サイズも小さくて扱いやすいですし、間違った処理をすることもないと思います。

  • pikopiko5
  • ベストアンサー率40% (51/126)
回答No.1

http://okwave.jp/qa/q86058.html こちらはベストアンサー以外のアンサーですが、参考になると思います。 http://okwave.jp/qa/q4968820.html

関連するQ&A