• ベストアンサー

Excelのデータベース活用で・・・

早速ですが、データベースの中から別シートに抽出をしたいのですが、これは可能ですか? できるならどうすればいいのか教えてください。 具体的に言うと、次のようなことがしたいんです。 [Sheet1]に以下のようなデータベースがあるとします。 A列:部署コード(4桁) B列:部署名 C列:社員コード(6桁) D列:社員名 この[Sheet1]のデータをもとに、[Sheet2]以下のシートには指定した部署のみの一覧を抽出したいんです。 例えば、A1セルにある部署コードを入力しておけば、指定したセルに該当する社員だけを表示したいということです。 よろしくお願いします。

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

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

#2のものです。 部の数だけ実行しないといけませんが。 第2行目だけにフィールド見だしがあるとします。 A1セルに抜き出したい部のコードを入れます。 コマンドボタンを1つ貼りつけ Private Sub CommandButton1_Click() End Sub の真中に、(Sub test02()とSub Endを除いて)下記を挟むのも良いと思います。 Worksheets("sheet2").Cells(j, "A") = _ Worksheets("sheet1").Cells(i, "A") 以下は列の数(=フィールド=項目の数)だけ増やしてください。Aのところを、E,F,G,・・・と変えたものを増やすと良い。 OKWEBの強制改行を避けるため、スペース+アンダーバーでわざと改行しています。=を挟んで左右にならべるのが普通です。 Sub test02() d = Worksheets("sheet1").Range("a3"). _ CurrentRegion.Rows.Count j = 2 For i = 2 To d If i = 2 Or Cells(i, "A") = Cells(1, "A") Then Worksheets("sheet2").Cells(j, "A") = _ Worksheets("sheet1").Cells(i, "A") Worksheets("sheet2").Cells(j, "B") = _ Worksheets("sheet1").Cells(i, "B") Worksheets("sheet2").Cells(j, "C") = _ Worksheets("sheet1").Cells(i, "C") Worksheets("sheet2").Cells(j, "D") = _ Worksheets("sheet1").Cells(i, "D") j = j + 1 End If Next i End Sub

keisukekun
質問者

お礼

詳しい説明をありがとうございます。 さっそくやってみました。 でも、実はまだ完成してないんです。(><) ここで再度質問をしようとも考えたんですが、そもそもVBA自体を分かっていないので上手く説明できません。 なので説明書を買ってきました。 VBAを理解するいいチャンスだと思って・・・。 この機会に頑張って習得してみます。 本当にありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

オートフィルタの後のコピーを嫌うとすると VBAの問題でしょう。 (1)データの最下行を知る。 (2)最上行について    部署コード(A列)=A1セルの内容、ならば    Sheet2の対応フィールド<==Sheet1   のフィールド (3)部署コード(A列)=A1セルの内容、でなければ   何もしない。 (4)次ぎの行について(2)(3)を繰り返す。 (5)最下行まで処理して終わり。 難しいロジックは使はなくてもできます。 興味があれば、VBAコードを載せますが。

keisukekun
質問者

お礼

ありがとうございます。 やはりVBAですか! なんらかの関数でできないかなぁって思ってたんですが、無理そうですね。 挑戦してみようと思いますので、詳しく教えてください。 よろしくお願いします。

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.1

メニューから [データ]-[フィルタ]-[オートフィルタ] を使ってはどうでしょうか? どうしてもSheet2上でということでしたら、 Sheet1をコピーして、それをSheet2とする ということも考えられます。 上記がご要望に沿わない場合には 補足をお願い致します。

keisukekun
質問者

補足

さっそく回答ありがとうございます。 でも、オートフィルじゃダメなんですよ。 現在、約500行のデータを15のシートに分けてるんです。 [sheet1]でオートフィルした後、計15回のコピーをして・・・。 ですから、なんとか自動的に各シートに該当する部署のみのリストを表示させたいんですよね。