質問: 文字列を検索しその列をコピーする(vba) よろしくお願いします。 os:windows 2000 pro 環境:office 2003 エクセルのvbaについての質問です。 a列には数値コードが入っています。 そのコードは"1"と"2"に分類されてます。 マスターはsheet1で、このマスターから コード1はsheet2に、 コード2はsheet3に 振り分けたいのですが、どうもうまくいきません・・・ a列にはコード"1" "2"以外に空白セルが存在します。 空白セルは無視したい。。。 それとこのデータはdbから抽出するのですが、 抽出したデータは規則性はありません。 抽出するごとに"1"と"2"と"空白"はランダムなので、 loop等のマクロを調べてやってみたのですが、出来なくて週末になってしまいました。 a列からコード1とコード2を検索して、 ヒットしたコードの行ごと各sheetにコピーして、 なおかつ各シートa列の入力されていない一番下の セルにコピーしたいのですが、検索でヒットした 上から順番に。。。 これをloopと組合わせれば、各シートにコピーするのは 問題ないような気がします。。。 sub aaa_bbb() .copy worksheets("sheet2").range("a65536").end(xlup).offset(1, 0) end with end sub loop等で上記の条件を満たせる方法はないでしょうか。 ご教示を、よろしくお願いします。
回答: こんばんは。 タイトル行は、sheet1, sheet2, sheet3 にあるという前提にしないと、このコードはうまく行きません。最初のマスターのシートは、オートフィルタを使って抽出しています。これで参考にしてみてください。なお、コードは、mycodeのところを増やし、myshtsの中も、同じ数だけシートも増やせば、さらに増えても、ループは可能です。 '----------------------------------------- sub sort_othersheetpaste() dim myshts() as variant dim mycode() as variant dim i as integer mycode = array("1", "2") 'コード myshts = array("sheet2", "sheet3") 'ペーストされるシート application.screenupdating = false 'マスターのシート with worksheets("sheet1").range("a1").currentregion for i = lbound(mycode()) to ubound(mycode()) .currentregion.autofilter field:=1, criteria1:=mycode(i) .offset(1).resize(.rows.count - 1).copy worksheets(myshts(i)).range("a65536").end(xlup).offset(1) next i .autofilter end with application.screenupdating = true end sub なお、マクロの実行のダブりの検査は、現在のコードではなされていません。