アプリ版:「スタンプのみでお礼する」機能のリリースについて

【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

A 回答 (2件)

IRange.Copy [A1]行の前に以下を追加してください。



ActiveSheet.Cells.Clear


Forループの中で、Workbooks.Addで追加したブックのSheet1にフィルタした結果を張り付けた後、保存する動作をしていますが、
例えば、前回のループで10行のデータを張り付けたとして、今回のループで5行のデータを張り付けたとすると、6~10行目には前回張り付けたデータがそのまま残っていることになります。
ですから、張り付ける前に一旦シートをクリアする必要があります。
    • good
    • 0
この回答へのお礼

siffon9さん
丁寧にご教示頂きありがとうございました!大変分かりやすかったです。

お礼日時:2019/03/23 00:33

市役所などの自治体が行っているパソコン相談で相談したほうが良いと思います。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!