• ベストアンサー

エクセルマクロ フィルタで検索した結果で新しいブックを作成する

いつもこちらでお世話になっているマクロ勉強中のものです。 オートフィルタを使ってD9の条件にあるものすべてを順番に新しいブックにコピーしていきたいと思っています。 Loopで処理するのだと思いますが、順番にすべて検索する 繰り返しの処理の仕方が分かりません。 不躾で申し訳ありませんが、提出期限が近いため、 どなたかご指南いただけたらと思います。どうぞよろしくお願いします。 Sub Macro1() ActiveSheet.Range("$A$9:$T$79").AutoFilter Field:=4, Criteria1:="○○" Range("D1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Copy Workbooks.Add ActiveSheet.Paste Folder = "C:\Documents and Settings\All Users\デスクトップ\" folder_name = "デスクトップ" ChDir Folder fname = "(D1).xls" ActiveWorkbook.SaveAs Filename:= _ Folder & fname, FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub

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

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

>オートフィルタを使ってD9の条件にあるものすべてを順・・・・ D9は1セルしか言ってない。そのセルの値をフィルタ条件にア売るのだったら、繰り返しにならない。重要なところだから、しっかり表現すること。補足で補足するようでは、読者を悩ます。 ーー 補足ではD列の各行の値でフィルタを繰り返すようだが、 データは"$A$9:$T$79"のようだが、フィルタ条件のあるシート、データの有るシート(名は)どうなっている? コードの貼り付けばかり(マクロの記録?)熱心で、大きくの情況を 整理して書かないと。 ーー >Loopで処理するのだと思いますが、順番にすべて検索する 繰り返しの処理の仕方が分かりません フィルタ条件の入っているD列の最下行を求め第6(?)行目から d行までFor Nextで繰り返せばよいのでは。 Field:=4, Criteria1:="○○"ならデータシート(ShX)のD列が、条件のあるシートのD列の各セルの値を指定すればよい。 For i=9 To d '(最終行)9は?ですが ・・・Criteria1:=shy.Cells(i,"D")・・・ Next i ーーー 新しいブックを作ったときActiveSheetのことを注意すること。 3つシートが出ているが、どれを指すか。 データ クライテリア 新ブック ーー >fname = "(D1).xls" のD1とは? ーーー

curo_chan
質問者

お礼

まだまだ勉強不足で思ったような動きにはなってくれませんでした。 もっと不足分を補えるように勉強し、更に疑問点をまとめてから質問するようにします。どうもありがとうございました。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

フィルタをかける前にD列の”重複しない値”を取得しないとダメなのでは? 重複しないリストを作る http://officetanaka.net/excel/vba/tips/tips80.htm この値を基にフィルタをかけていき、その値で新規Book作成~保存の処理に続けるとか。

curo_chan
質問者

補足

ご指摘ありがとうございました。 こちらのサイトを拝見して、リストを作成する意味は理解できました。しかし、値でフィルタをかける方法が分かりません・・ まだまだ勉強不足です。 どうもありがとうございました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

今一つ意味が不明です。 >D9の条件にあるものすべてを 条件は"○○"なんじゃありませんか? 「あるもの」ってなんですか? 条件に一致する行全部ということですか? それともD列だけですか? コピペでやるのは正しいやり方で、この場合はフィルタされた ものしかコピーされないので、ループする必要はありません。

curo_chan
質問者

補足

文章がつたなくて申し訳ありません。 例 D 100 130 140 100 100 130 ・ ・ 1.フィルタで100を検索して結果を新しいブックにコピペして100.XLSとして保存、 2.フィルタで110を検索して結果を新しいブックにコピペして110.XLSとして保存、 3.フィルタで130を検索して結果を新しいブックにコピペして130.XLSとして保存、 4.繰り返し・・・D列にあるものすべてで新しいブックに保存したいのですが その指定方法が分からないのです。

関連するQ&A