• ベストアンサー

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

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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/7940)
回答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

  • 可視セルから可視セルへのコピー&ペーストについて

    こんばんは、教えてください!! 可視セル(表)から可視セル(表)へのコピーはどうすれば可能でしょうか。 今1つのブックに表があって4人で表を埋めていく作業をしています。 表にフィルターをかけてそれぞれ担当の項目をフィルターで表示させ表を完成させていく作業をしています。また1つのファイルを共有にしていなく、それぞれコピーをしているので最終的に4つのファイル(同じファイルで各担当の項目のみ埋まっているもの)が集まりそれらを1つにまとめなければなりません。 今、まとめている作業をしているのですが、まとめる表も担当の表もどちらもフィルターをかけた状態にしてコピー・ペーストをしようとしています。 そうすると例えばフィルターを使ってAさんのファイルを抽出し、まとめる表にコピーをしようと可視セルの選択をしてコピーを使ってみたのですが、貼り付け たものは表示されていない行にも貼り付けされます。 可視セルのみを可視セルにペーストするにはどうすればいいのでしょうか。 かなり長い文章になりました、すみませんが助けてください!!!!

  • 2013特定文字のセル行を別シートにコピーのマクロ

    こんにちは。 Excel 2013を使用しています。 AからAKまでの列、100行ほど(行数は変化する)の表があります。 A行にアルファベットと数字の文字列があります。 その文字列は最初の7文字がアルファベットで後の9文字が数字です。 文字列に法則がありますので手作業では以下のように抽出して 別のシートにコピーしています。 表全体を範囲指定して、「データ」-->「フィルター」-->A列で「テキストフィルター」 -->「ユーザー設定フィルター」-->「抽出条件の指定」-->「??BJ*と等しい」 (A列の3,4文字目がBJになっているものを抽出しています) 「ホーム」-->「検索と選択」-->「可視セル」-->コピーして別シートにペースト この作業は手作業でもマクロの記録でも時間がかかります。 ほかに良い方法があればそれをマクロ化したいと思います。 PCに負担のかからない早くできる方法をご存じの方お教えください。

  • 可視セルへのコピー マクロ

    次のように、可視セルから可視セルへコピーしたいです。 (元の状態) A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150 dさん 済    100 eさん 未    120 fさん 済    250 gさん 未    300 hさん 未    210 この状態をB列で支払が済んでるかどうかでフィルターをかけて ABC列をコピーし、DEF列に可視セルのみコピーして A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 cさん 未    150  cさん 未    150 eさん 未    120  eさん 未    120 gさん 未    300  gさん 未    300 hさん 未    210  hさん 未    210 フィルターをはずすと A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150   cさん 未    150 dさん 済    100 eさん 未    120   eさん 未    120 fさん 済    250 gさん 未    300   gさん 未    300 hさん 未    210   hさん 未    210 と、未払いの人だけ、D列以降にもコピーされてる状態にしたいのです。 可視セルへのコピーはマクロを組む必要があると聞いて見てるのですが、 私が実現させたい可視セルへのコピーとまた違うプログラムでした。 どなたかよろしくお願いします。

  • 可視セルのみのコピー

    あるエクセルシートのデータで、非表示の行または列があって、それを別のシートにコピーするとき、データは可視セルのみをコピーしつつも(非表示の行・列を自動削除)、書式・列幅だけは元データを生かし貼り付けということを簡単に行う方法はあるでしょうか。「編集ージャンプ」で可視セルのみ選択しコピーまではうまくいったのですが、貼り付けのとき、値貼り付けまたは行・列どちらかの貼り付けしかできず、書式・列幅は再度貼り付けるという2度手間になってしまいます。一度にできるよい方法があったら教えて下さい。

  • 関数で可視セルのデータ個数カウント

    Excel2002を使用しています。 オートフィルタで抽出したデータの個数を関数で カウントしたいのですが、可視セルのみをカウント 出来る関数はあるのでしょうか? 例えば   A 1 件数 2  2 3  1 4  3 5  1 6 関数 A6セルに何らかの関数を入れておき、 A列のオートフィルタを使って、1を抽出した時は A6に”2” 3を抽出した時はA6に”1”を表示させたいの です。 このように、可視セルのデータ個数のみを カウントする関数はありますでしょうか? フィルタを使わずにCOUNTIF関数でカウントする 方法、また、可視セルをコピー貼り付け後 カウントする方法は避け、あくまでフィルタで 抽出したデータの個数を瞬時にカウントしたいの です。 ご教授宜しくお願いします。

  • エクセルの可視セルのみをコピーする

    宜しくお願いします。 エクセルの可視セルのみをコピーしたいのですが、うまくいきません。 幾つか列をランダムに飛ばして(隠して)作成してある表があります。 この隠したところをカットして新規ページにコピーしたいのですが、できません。可視セルのみを選択するところまではいけるのです。 (編集⇒ジャンプ・・・)しかし、これをコピーして貼り付けようとしてもできないのです。 どなたか、方法を教えてもらえませんか。 宜しくお願いします!

  • エクセルで、可視セルだけにコピペをしたい。

    宜しくお願い致します。 例えですが・・・ A列にはランダムで色んな果物の名前 B列には果物の色 C列はすべて空欄 (1)A列をオートフィルタで「りんご」を抽出 (当然ですが、抽出された行は飛び飛び状態です。) (2)抽出したデータのみ、C列に「おいしい」と入力する。 このようにいたってシンプルな作業なのですが、 抽出した状態で、C列の一番上のセルに「おいしい」と入力し、 それをCtrl+Cでコピーし、Ctrl+↓キーで一番下まで貼り付け をしたら、C列の可視セル以外のところにも貼り付けられてしまったのです。こういうやり方は間違ってるのでしょうか。 ためしに、新規にexcelを開いて、同じようにコピペしたら 可視セルのみ貼り付けされてたんです。 状況によっては、上記のやり方だと可視セル以外も貼り付けられてしまうことがあるのでしょうか。 分かりにくくて申し訳ありませんが、宜しくお願い致します。 あるんでしょうか。

  • 可視セルから可視セルへのコピー

    エクセルのデータ集計で集計された数字(可視セル)を他のファイルの表にコピーしたいのです。 通常、編集→ジャンプから可視セルを選びコピー→形式を選択して貼り付けから値を選び 貼り付けているのですが、今回は表の方にも非表示にしている行があるのです。 なので通常の方法でやると表の方の非表示セルに値が貼りついてしまい困ってます。 可視セルの値を表の可視セルへコピーする方法はないのでしょうか?

  • 可視セルのみで平均を計算

    Sheet1にある表をオートフィルタで抽出し、その可視セルの三列目にある値の平均値をSheet2のあるセルに出力するマクロを作りたいのですが、どうすればいいでしょうか? ↓これがキー 番号     名前      値 027***  あそこ     12 027***  こちら     0 027***  どちら     5   ・    ・       ・   ・    ・       ・   ・    ・       ・ 右の値の平均値をSheet2に出力

  • 可視ファイルコピーがうまくいかない!!

    下記の図1のようにB列を非表示にた状態のものを 別のシートにコピーペーストをしたいと思います。 編集 ジャンプ 可視セルにチェックをいれてコピー貼り付けを するのですがなぜか失敗してしまいます(下図2のようになってしまいます) なぜだかわかりますか?C列が空白だからでしょうか? ちなみにフィルタもかけていて、A列が7で始まりDが動物で抽出 しています。 図1                A列   C列  D列 E列    7755     かめ  有     7788     うさぎ   図2 A列   C列  D列 E列    7755 かめ  有     7788 うさぎ        

専門家に質問してみよう