プロが教える店舗&オフィスのセキュリティ対策術

sheet1にあるデータを条件に合わせてデータを抽出したいのですがうまくいきません。

sheet1
A   B   C
1  100  a
2  180  b
3  150  c
4  200  c
5  180  a
6  140  b
7  110  a
8  120  a

上記のようなデータで、C列に a と記入されているデータをsheet2に抽出

sheet2
A   B   C
1  100  a
2  180  a
3  110  a
4  120  a
 

というように順番に抽出したいのですが、うまくいきません。
ほかにもいろいろな条件があるためフィルターやエクセルでなくVBAでと考えています。
よろしくお願いします。

質問者からの補足コメント

  • お世話になります。

    質問の表は単純ですが実際のデータ数、条件数とも多いです。
    今までの担当の方はフィルター、コピーで対応していたようですが間違いもあったりしたので、
    正確で早く仕上げる方法を検討しています。

    条件を a とした場合に別シートに順番に抽出。
    同様に、bとcについても同じ作業が必要となります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/09/20 10:29
  • お世話になります。
    色々考えていただき大変ありがとうございます。
    大文字・小文字、全角・半角の入力は大丈夫だと思います。

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/09/20 11:05

A 回答 (3件)

単純なサンプルですが、最初の例の一例です。



Sub sample1()
 Dim Line1 As Long
 Dim Line2 As Long
 
 ThisWorkbook.Activate
 Worksheets("Sheet1").Select
 
 
 For Line1 = 1 To Cells(Rows.Count, "A").End(xlUp).Row
  If Cells(Line1, "C") = "a" Then
   Line2 = Line2 + 1
    With Worksheets("Sheet2")
    .Cells(Line2, "A") = Line2
    .Cells(Line2, "B") = Cells(Line1, "B")
    .Cells(Line2, "C") = Cells(Line1, "C")
   End With
  End If
 Next Line1
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいたコードをもとにしながら作っていきたいと思います。
また分からなくなったら質問させていただきますので、その際はよろしくお願いします。

お礼日時:2016/09/20 11:08

>今までの担当の方はフィルター、コピーで対応していたようですが間違いもあったりしたので、


>正確で早く仕上げる方法を検討しています。

同じ操作を繰り返しいても、何回もやっていればミスも生じます。
VBAなどを使っての自動化は正しい方向だと思います。

ただ、tokomamajimikiさんが退職した場合などのことも考えておいてください。
システムの変更が必要になった場合に、対応が出来なくなります。

-----------------------
補足要求です
データを入力する人は、「大文字・小文字」と「全角・半角」と正しく入力できますでしょうか?
それによっては、若干のプラスの関数が必要です(関数で出来ますが、動作速度は落ちてしまいます)。
この回答への補足あり
    • good
    • 0

こんにちは



例が単純ですので、この例なら
「フィルタ→別シートにコピー」
が一番単純であると思います。

芸のないやり方ですが、VBAなら
「1行ずつ条件を判断して、条件にあったデータだけをコピー」
が出来ます。

場合によっては、「ピボットテーブル」をマクロに記録しておいて、その結果をコピーする方が簡単かもしれません。

機密がありますので、詳しいことは書けないこともあると思いますが、もう少し詳細を教えてください。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!