• ベストアンサー

範囲が変化する可視セルをコピーするマクロ

エクセル2013で注文品の表を作成しています A~Pまで列があり列は固定、行数はデータ量に応じて毎回変化します そこで質問なのですが 1.Aの得意先No.をフィルターにかけて特定の得意先のデータのみ   抽出して別シートにコピーするというマクロを作りたいのですが、   行数が変化する可視セルをコピーするにはどのようにすればいいでしょうか? 2.1で作成した表はメールで客先に送る為、コピー元のデータがあるシートは   削除したいのですが問題ないでしょうか? VBA初心者なので分かりやすく教えていただけると助かります。 よろしくお願いします。

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

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

データ例 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/prog/prog04.html のデータを使わしてもらう。 「はじめに」のデータです。 Sheet1、Sheet2のシートを問題にする。 標準モジュールに フィルタ実行 ーー Fieldには列番号、 Criteria1:=の次に、抜き出す文字列、数字条件 を書き込む。 Sub test01() Worksheets("Sheet1").Range("A1").AutoFilter Field:=2, Criteria1:="りんご" End Sub ーー Sheet1のフィルタの結果をSheet2にコピー貼り付け。 Sub test02() Worksheets("Sheet1").Range("a1").CurrentRegion.Copy Worksheets("Sheet2").Range("A1") End Sub ーー フィルタを解除(参考。手作業でもよいと思う) Sub test03() Worksheets("Sheet1").Select Range("A1").Select Selection.AutoFilter End Sub ーー 結果 Sheet2に下記となる。 日付 商品名 単価 数量 金額 2010/4/1 りんご 150 15 2,250 2010/4/2 りんご 150 10 1,500 2010/5/1 りんご 150 30 4,500 2010/5/2 りんご 145 35 5,075 Sheet2へコピーができた段階で Sheet1との連動性はなくなる。Sheet1を削除しても、Sheet2は影響を受けない。

sunny_orange
質問者

お礼

ありがとうございます。 リンク先のページの内容は分かりやすいですね。 参考にしながら試してみます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

元のデータのシート名は「元データ」だとして A:P列にデータがあるとして 1行目はタイトル行で2行目からデータが記入してあるとして 仮にaというデータを抽出するとして sub macro1()  dim s as string ’抽出したいデータの指定  s = "a"  ’別途質問して適宜作成する事 ’抽出  worksheets("元データ").select ’適切に修正する事  activesheet.autofiltermode = false  range("A:P").autofilter field:=1, criteria1:=s  activesheet.autofilter.range.copy ’転記  worksheets.add after:=worksheets(worksheets.count)  on error resume next  activesheet.name = s  activesheet.paste ’後片付け  application.displayalerts = false  worksheets("元データ").delete  application.displayalerts = true end sub

sunny_orange
質問者

お礼

ありがとうございます。 教えていただいた内容で試してみてます。

関連するQ&A