• ベストアンサー
  • すぐに回答を!

Excelをデータベースのように使用した場合 データの抽出

Excelをデータベースのようにして使用している場合について教えて欲しいことがあります。  ・Sheetを2つ作成したとします。  ・Sheet1はたくさんのデータが入っているシートです。  ・Sheet1の名前を仮に『Data』とします。  ・Sheet2はSheet1から必要なデータを抽出してきて並べるシートです。  ・Sheet2の名前を仮に『Report』とします。  ・『Data』のA列には1~200までの数字が入力されています。  ・その数字は ランダムである上に 重複していることもあります。  ・例えばA1には「1」が入力されていて A2には「2」が入力されています。  ・しかし その後A3にもA4にもA5にも「2」が入力されています。  ・同様にA6~A15までは「3」が入力されているのです。  ・このようにA列の数字は 同じ数字が何度も重複しており その重複には規則性はありません。  ・『Report』シート上で『Data』シートからデータを抽出したいのですが A列に「1」と入力されているデータだけを取り出すのなら「VLOOKUP」でもできますよね・・・・  ・しかし A列に「2」と入力されているデータを「VLOOKUP」関数で選んでも その先頭行のデータしか読み込んできません。  ・『Data』シートのA列に入力している数字から 必要な数字が入力されている行のデータだけを 全て『Report』シートに並べようとした場合 手作業で行うとすると・・・ 『Data』でA列が「1」のデータだけを選び,それを『Report』シートに貼り付ける。次は「2」で実行する。・・・・・という作業を200回繰り返すことになりますが 簡単に行うにはどのようにすればいいのでしょうか? マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすく教えていただきたいのですが・・・ 勝手なお願いで申し訳ありませんが よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1027
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.4
  • imogasi
  • ベストアンサー率27% (4561/16327)

#3です。 Sheet1に足した連番(D列)は1をスタートにして、2,3,4・・と振っています。 M6から1をまず探すにはROW()ーー>6ですから、Row()-5に書き換えて最初が1になるように数を調整してください。すると Sheet2の M列6行目 6-5=1 -->Sheet1のT列で、1をMATCH関数で探す M列7行目 7-5=2 -->〃 2を探す M列8行目 8-5=3 -->〃 3を探す ・・ となります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お礼が遅くなって申し訳ありません。 ありがとうございます。 ついでに・・・ あと一つ教えていただけませんか? データシートのデータはA6~R275までです。 Sheet2には M6からデータを書き込むようにしたいのです。 つまり Sheet1のA列~R列までを Sheet2のM列~AD列に書き込みたいのです。 このような場合は 式のどの部分を書き換えればいいのでしょうか? よろしくお願いします。

関連するQ&A

  • 必要なデータを抽出したい

    必要なデータを抽出したい    A   B    C   D ・・・ 1 7/1   101   102  103 2 7/2   101   103 3 7/3   105   203 4 7/4   103   205 5 7/5   101   202 ・ ・    ・ ・ ・    ・ ・ ・    ・ Excelで上の様にA列に日付、B行列以降に数字が書かれているシートから、抽出したい数字が含まれている行を別シートに抽出するマクロはどのように書けばよろしいのでしょうか。 技術者の方、よろしくお願いします。 例えば、101が含まれているデータを抽出したら、sheet2に    A   B    C   D 1 7/1   101   102  103 2 7/2   101   103 3 7/5   101   202 となるようにしたいのです。

  • エクセル 大量のデータから抽出し自動表示

    エクセルのSheet1のC列に大量(3500件くらい)のデータがあります。このデータは毎日さらに増えます。D列にもおなじだけのデータがあります。 (E列・F列にはあとから別のデータをさらに入力していきます。) Sheet1 A B C D E F     1 2 3 4     2 3 4 5      1 3 5 6     3 5      2 4      ・ ・     ・ ・ こんな感じです。 今回、このC列に入っているデータを検索し、完全に一致したデータのみを別シートに抽出したいのです。 C列にはいろいろな数字が入っていて、同じものもありますが、D列にも同じ数字とは限りません。 なので、VLOOKUPは使用できないのかと思っています。 一致したデータはその行をすべて別シートに抽出したいです。 検索をかけて一致しないデータがあった場合もその検索した数字は残しておいてさらに今後一致になるまでデータを残しておくという方法はできますでしょうか。 エクセルは2003です。 よろしくお願いします。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

その他の回答 (3)

  • 回答No.3
  • imogasi
  • ベストアンサー率27% (4561/16327)

質問が、冗長すぎる。回答者は初心者ばかりではない。くだくだ書かなくても、「A列に重複データがあります」だけでわかる。 本来 エクセルは 操作 関数 VBA などの解決法があるが、本筋は「操作」だ。それを輪売れないこと。 データーフィルターフィルタオプションの設定などが適当ではないかな。 データベースクエリのご紹介もあるが、アクセスなどの経験がないと難しいのでは。 関数だけで抜き出すご回答も有るが、私の自称imogasi方式を書いてみる。 #2のご回答の式の意味が理解できれば、下記は読まなくても良い。 ーーーー Sheet1 A2:B2 A,B列データ  D列作業列 A列  B列      D列 1a1 1b2 2c 3d 1e3 3f 2g 1h4 4i 2j ーーー D2の式は =IF(A2=Sheet2!$A$1,MAX($D$1:D1)+1,"") 下方向に式を複写 ーー Sheet2 A1に1、や2.3の抜き出す条件の値を入れる。 A2に =INDEX(Sheet1!$A$2:$B$100,MATCH(ROW()-1,Sheet1!$D$2:$D$100,0),COLUMN()) 右へ式を複写。 あ2:b2を下方向に式を複写。 結果 1 1a 1b 1e 1h 1を2に変えると即座に 2c 2g 2j #N/A#N/A このエラーを出さない方法は、Googleでimogasi方式を照会すればでてくる私の回答の中に載っている。長くなるので略。 Sheet1のD列のMAXの値より大なら空白にするIF関数を前にかぶせる。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 すみません。長々とした質問で・・・ こちらがシロウトなもので こんな表現しかできませんでした。 結局 このimogasi方式というのを 使わせていただくことにしました。 しかし 関数の意味が理解できていないので(スミマセン 初心者で) ちょっと うまくできない部分がありました。 データシートのA6~R275までがデータなので 作業列はT6~T275までつくりました。 T6には =IF(A6=Sheet2!$A$1,MAX($T$5:T5)+1,"") でうまくいくと思います。 しかし Sheet2のJ5に抜き出す条件の値を入れるようにして M6からデータを書き込むようにするには M6に =INDEX(Sheet1!$A$6:$R$275,MATCH(ROW()-1,Sheet1!$T$6:$T$275,0),COLUMN()) では うまくいきません。 どこがダメなのでしょうか?

  • 回答No.2

ここ1,2ヶ月の間にこのサイトで見た回答を参考にさせていただいております。オリジナルのURLを記録してなかったので、再現してみました。 シート名、データベースのデータ範囲はご自分の環境に合わせて修正願います。 データベースのシート .......A.......B.......C.......D ..1.................1.....あ.......a ..2.......2.......2.....い.......b ..3................6.....う.......c ..4.................1.....え.......d ..5.......5.......2.....お.......e ..6................3.....か.......f ..7................4.....き.......g A1の式=IF(B1=Sheet1!$A$1,ROW(),"")、以下下方に複写 データはB列以降に置く 検索するシート ............A...............B...............C ..1...............2.............い...............b ..2..............................お...............e ..3........................#NUM!.......#NUM! ..4........................#NUM!.......#NUM! ..5........................#NUM!.......#NUM! A1:検索する値 B1の式=INDEX(Sheet2!$B$1:$Z$7,SMALL(Sheet2!$A$1:$A$7,ROW(A1)),COLUMN(B1)) 以下、列方向、行方向に複写 #NUMが気に入らない場合は(普通は嫌ですね..)条件付書式で白色フォントにする等してください。 式にエラー処理を盛り込みたければ、ご自分でなさって下さい。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 何とか 希望どおりにできそうです。 ありがとうございました。

  • 回答No.1

下記は検討されたのでしょうか?A列の値だけで抽出なら、関数で可能でしょうが、より複雑な条件になるとこれらの出番になると思います。 1.フィルタオプション http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm 2.データベースクエリ http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter2.htm (Officeインストール時にMS Queryをインストールしてある、または、追加でインストールする必要あり)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 フィルタオプションを使えば 確かに抽出ができました。 しかし A列の数字でデータを抽出して表に表す場合 何度も 実行させるためには マクロが必要ですね。 個人的には VLOOKUP関数のように 特定のセルに数値を入力すると 瞬時に表示してくれるのを期待していたのですが・・・ ありがとうございました。

関連するQ&A

  • エクセルで重複しないものだけを抽出したい

    下記のようなデータがあります。 A B C D 1 20 30 40 1 20 32 41 1 20 30 49 1 20 81 39 2 20 76 40 2 20 32 41 2 20 30 49 3 20 81 39 3 20 39 40 3 20 32 41 4 20 30 49 4 20 81 98 このうち、列Aの他と重複しない部分であり、かつ先頭行を抽出するにはどのようにしたらよいでしょうか? 上記の例で言うと、列Aの1から4までのそれぞれ1行目を選ぶという作業です。 抽出後 A B C D 1 20 30 40 2 20 76 40 3 20 81 39 4 20 30 49 vlookupなどの関数でできるのでしょうか?教えてもらえたらうれしいです。お願いします。

  • 重複するデータの抽出

    どなたか教えてください。 Sheet1A列に入力されたデータ群と重複するデータを 別sheetから抽出したいのですがやり方がわかりません。 要は、Sheet1A列に10000件のデータが入力されているのですが、それらと重複するデータを別シートから検索したいです。(別シートで10000回検索しない方法が知りたいです。) よろしくお願いします。

  • エクセル内での、データの複数の抽出は無理でしょうか?

    Sheet1 A B C D 1 こ た い あ 2 き ち ろ か 3 け つ は さ 4 く て に た 5 か と ほ な Sheet2 A B C 1 か と ほな 2 き ち ろか 3 く て にた VLOOKUP関数で Sheet2のA1、A2、A3をSheet1から 同列のB、Cも同じように抽出しようとしましたが C列だけSheet1のC列とD列と合わせた表記にしたいのですが これは関数では無理なのでしょうか? 私自身、あまり関数が得意ではないので もしマクロでなければ・・・となると少し不安です。 宜しくお願いします。

  • excelの複数シートを検索対象にして重複行を抽出する方法

    ある値が重複する行を抽出したいのですが 抽出元データが600,000行近くあり、1sheetに入らず9シート程に分けました。 countifを使おうとしたのですが検索範囲に複数シート指定が出来ず(3D-参照の対象関数ではないようです)、 =COUNTIF('sheet1:sheet9'!$C:$C,C1)としてみたのですが、重複行があっても全て#VALUE!となってしまうので機能できていないようです。 具体的には sheet1~8に下記のようなデータがあり、C列が重複する行を抽出したい。 A列:id、B列:名前、C列:メアド、D列:xx 宜しくお願い致します。

  • エクセルでデータ抽出

    エクセル初心者です。 エクセルでに次のような表を作っております。 (Sheet1) 担当 会社 郵便番号 住所 菊地 A社 0000000 ○○○○ 菊地 B社 0000000 ○○○○ 菊地 C社 0000000 ○○○○ 田中 D社 0000000 ○○○○ 田中 E社 0000000 ○○○○ 山本 F社 0000000 ○○○○ 山本 G社 0000000 ○○○○        ・        ・        ・ と800件くらいあるのですが、 これを 別シート(Sheet2)で名前を菊地と入力すると菊地のデータが一覧で出るようにしたいのですが、どうしたらよいでしょうか。 できれば、マクロを使わずに関数でやりたいです。 VLOOKUPかな?と思い、いろいろ調べたのですが、抽出したいデータが複数あるので、悩んでおります。 すみませんが、どなたかご指導お願い致します。

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • エクセルのデータ抽出について

    基本的な内容かもしれませんが、どうしてもわからないので教えてください。   A B C D 1 1 b 3 c 2 2 t 4 y 3 3 r 3 o 4 4 l 5 p 5 5 k 3 w 上記のようなデータベースがあったとします。このシートと異なるシートのあるセルにたとえば3と入力すると   A B C D 1 1 b 3 c 2 3 r 3 o 3 5 k 3 w のようにC列が3である行が抽出され、なおかつA列の昇順で並ぶということをしたいのですが、vlookup等ではうまくできません。 フィルタを使用せずに実現したいのです。お願いします。

  • エクセルでVLOOKUP関数を使用すると、データ数が多くてフリーズしてしまいます。

    エクセルでVLOOKUP関数を使用すると、データ数が多いくてフリーズしてしまいます。どうにかして解決できないでしょうか。 エクセルでVLOOKUP関数をしようして、データ数が多いとフリーズしてしまうのですが、何か解決方法ありますでしょうか。 エクセルでVlookUpを使い、Sheet1にsheet2から一致したデータを読み込もうと思うのですが、 データが重くなりすぎて、PCがフリーズしてしまいます。 どうにかして、簡単にVlookupと同じように一致したデータを抽出することはできないでしょうか。 sheet1では B列を入力して、C列を抽出したいです。 A列_____ ___B列_____ _____ _____ _____ ___C列 No_____ 入力項目_____ _____ _____ _____ 保存場所 1_____ #EXTINF:213,08___________ suzuki I:\music\suzuki 2_____ #EXTINF:223,08___________ satou U:\music\satou 2_____ #EXTINF:223,121__________kondou G:\music\kondou ↑ =VLOOKUP(B2,sheet2!$A$2:$B$40000,2,FALSE) =VLOOKUP(B3,sheet2!$A$2:$B$40000,2,FALSE) =VLOOKUP(B4,sheet2!$A$2:$B$40000,2,FALSE) sheet2のデータは A列_____ _____ _____ _____ ____B列 項目1_____ _____ _____ _____ 保存場所 #EXTINF:213,08_____ #suzuki I:\music\suzuki #EXTINF:223,08_____ #satou U:\music\satou #EXTINF:223,121____#kondou G:\music\kondou

  • データ抽出法

    一度似たような質問をしましたが応用がきかないので、教えてください。 Sheet1A列に入力されたデータ群を含むデータを別sheetから抽出したいのですがやり方がわかりません。 要は、Sheet1A列に10000件のデータが入力されているのですが、それらを含むデータを別シートから検索したいのです。(別シートで10000回検索しない方法が知りたいです。) よろしくお願いします。

  • エクセルで、条件にあう複数の行を別のシートに抽出する

    《どなたか、お教え下さい》   エクセルで、条件にあう複数の行を別のシートに抽出してまとめる。 「sheet1」の下記の基本データを「sheet2」に「得意先」ごと「日付」の早い順にまとめたいのでが。関数を使ってできないものか、どなたかお教え下さい。「マクロ」や「Access」は使用したことがないので、関数を使ってやりたいと思いますが、できるものでしょうか。よろしくお願いします。 sheet1 番号 得意先 日付 商品名 商品詳細 金額 備考 1   A 2   B 2   B 4   D 5   E 6   F 2   B 3   C 5   E   A    B  番号  得意先   1   A      2   B   得意先名は、番号を入力することで表示されるように   3   C   関数「VLOOKUP」を使って表示させるようにしていま   4   D   す。    5   E   6   F