【VBAマクロ:繰り返し処理に関して】
エクセルVBA初心者です。下記のマクロに関してご指導をお願いいたします。
sheet1にデータベースがあります。J列に記載されたコードを、L列にリスト化された特定のコードでソートして新しいブックに抽出するマクロを組みました。
求めていたのは、L2のコードでソートして貼り付けたブック、L3のコードでソートして貼り付けたブック…とL列にリスト化したコードをひとつずつ、順番にソートしたデータが抽出されることでした。しかし、組んだマクロを実行してみると、L2のコードでソートして貼り付けたブック、L2〜L3のコードでソートして貼り付けたブック、L2〜L4のコードでソートして貼り付けたブック…とn+1ずつ抽出対象が増えてソートされるようになりました。原因はソートする対象が行になっているためだとは思うのですが、修正が上手くいかず困っております。是非とも助けて頂きたいです。よろしくお願いいたします。
下記は、現時点でのマクロです。
こちらに手を加えて、求むべき姿にして頂けるとありがたいです。
Option Explicit
'
Sub Macro1()
'
Dim I As Worksheet
Dim Row As Long
Dim IRange As Range
Dim FileName As String
'
Set I = ThisWorkbook.ActiveSheet
Row = [J1].End(xlDown).Row
Set IRange = Range("A1", "J" & Row)
ActiveSheet.AutoFilterMode = False
Workbooks.Add
'
For Row = 2 To I.[L1].End(xlDown).Row
FileName = I.Cells(Row, "L")
IRange.AutoFilter 10, FileName
IRange.Copy [A1]
ActiveWorkbook.SaveAs FileName
Next Row
ActiveWorkbook.Close
ActiveSheet.AutoFilterMode = False
End Sub
No.2ベストアンサー
- 回答日時:
IRange.Copy [A1]行の前に以下を追加してください。
ActiveSheet.Cells.Clear
Forループの中で、Workbooks.Addで追加したブックのSheet1にフィルタした結果を張り付けた後、保存する動作をしていますが、
例えば、前回のループで10行のデータを張り付けたとして、今回のループで5行のデータを張り付けたとすると、6~10行目には前回張り付けたデータがそのまま残っていることになります。
ですから、張り付ける前に一旦シートをクリアする必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
VBScriptで重複レコードを削除...
-
C# DataGridView のヘッダーセ...
-
(VBA) Dir 関数で取得するファ...
-
リスト構造のソートで悩んでま...
-
n個の要素で出来る順列組み合...
-
DataGridViewの複数列を連動し...
-
vbでDataTableの抽出コピー
-
配列の中身を入れ替える方法を...
-
【C言語】ファイルでのソート方...
-
列のどこをクリックしてもソー...
-
スプレッドでのソート
-
配列の問題
-
VBA基本構文の作り方 2列の...
-
MSFlexGridのSortメソッドについて
-
Excel VBA で別シートにデータ...
-
2次元配列を複数項目でソートし...
-
コーディングの参考
-
DataGridViewのソートを止めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
C# DataGridView のヘッダーセ...
-
ファイル名「1.jpg ~10.jpg~...
-
C# DataTableの行をソートしてD...
-
あるディレクトリ内のファイル...
-
excel VBA の条件をつけての列...
-
excel VBA リストビューの行...
-
DataGridViewの複数列を連動し...
-
文字列をソートする方法
-
Excelですべての組合せ(重複組...
-
列のどこをクリックしてもソー...
-
n番目に大きい数を求めるアル...
-
Excel VBAで並べ替えをしたい
-
DataGridViewの昇順降順。
-
vbでDataTableの抽出コピー
-
数字文字列のソート方法
-
VB6でデータを昇順に並べ替える
-
VBScriptで重複レコードを削除...
-
ListViewのソートについて
おすすめ情報