質問: 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回繰り返すことになりますが 簡単に行うにはどのようにすればいいのでしょうか? マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすく教えていただきたいのですが・・・ 勝手なお願いで申し訳ありませんが よろしくお願いします。
回答: 質問が、冗長すぎる。回答者は初心者ばかりではない。くだくだ書かなくても、「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関数を前にかぶせる。