![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
オートフィルタ結果をコピーして、別シートに貼り付けるというマクロとなります。
しかし、これですと絞り込んだ対象の中に空白の行があると、空白行の上までの部分しかコピーをすることができません。
そこで、登録のシートの空白行は削除することなく、
抽出のシートで空白行を削除して貼り付けをしたいのですが、
こうしたことは可能でしょうか。
もし可能でしたら、どのようなコードを追記すればよろしいでしょうか。
よろしくお願い致します。
>
Sub ()
Const SHEET_COPY As String = "登録"
Const SHEET_PASTE As String = "抽出"
Worksheets(SHEET_COPY).Range("a2:e" & _
Worksheets(SHEET_COPY).Range("a1").CurrentRegion.Rows.Count).Copy
Worksheets(SHEET_PASTE).Range("a" & _
Worksheets(SHEET_PASTE).Range("a1").CurrentRegion.Rows.Count + 1).PasteSpecial Paste:=xlPasteValues
Sheets("抽出").Select
End Sub
No.3ベストアンサー
- 回答日時:
図を入れることを忘れたのと修正部分があります。
たぶん、このようなマクロでも、おそらくは満足はされないとは思いますが、参考ぐらいにはなるはずです。
修正部分:一箇所:横に一つずれる
OpRng.CurrentRegion.ClearContents '貼り付け先のデータの削除
If Sh1.AutoFilterMode = False Then Exit Sub
Set Rng = Sh1.AutoFilter.Range
j = 2
Rng.Rows(1).Offset(, 1).Copy OpRng.Cells(1) '※修正
For rw = 2 To Rng.Rows.Count
If WorksheetFunction.Subtotal(3, Sh1.Cells(rw, 2)) > 0 Then
OpRng.Cells(j, 1).Resize(, Rng.Columns.Count).Value = _
Sh1.Cells(rw, 2).Resize(, Rng.Columns.Count).Value
j = j + 1
End If
Next rw
End Sub
![「Excel VBA オートフィルタの結果」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/1138040_57457a4a13651/M.jpg)
No.4
- 回答日時:
>AutoFilter で間が空くような現象
フィルターの条件を複数指定して、条件の1つに(空白セル)を入れるとか?
(=特定のコード1つのみ除外して残りのデータは全て残したい場合など)
>Range("a1").CurrentRegion.Rows.Count + 1).PasteSpecial Paste:=xlPasteValues
わざわざこう書く場合は、貼り付け先に既にデータがあるという事ではないのでしょうか。
つまり、元々のコードは過去データに追記していくような仕様で設計されているとか?
※提示されたコードを2回実行すれば動きが確認できると思います。
その場合、空白を含んではいけない仕様になります。
[予想]
どこかからコード流用。そのコードは過去データに追記する仕様(空白セルを含んではいけない前提)
↓
質問者が元コードの仕様を理解せず、自分の都合で空白セルを含む仕様を追加して質問。
ありがとうございました。
お礼が遅れましたこと、お詫びします。
コードの表記までありがとうございます。
参考にさせていただきます。
No.2
- 回答日時:
このご質問を注意深く読んでみましたが、再現性が今ひとつ取れません。
何か、一つの条件が抜けているようです。>これですと絞り込んだ対象の中に空白の行があると、空白行の上までの部分しかコピーをすることができません。
これ自体は、CurrentRegion が原因だとしても、AutoFilter で間が空くような現象が、あるとは思えないのです。(図1)
どのようなデータの並びになっているのか教えていただきたいです。
Range("a1").CurrentRegion.Rows.Count + 1).PasteSpecial Paste:=xlPasteValues
これも意味不明です。
いずれにしても、SpecialCells やPastSpecial メソッドで可能になるかどうかは、内容が単純でないので、簡単ではありません。本来ファイルターで工夫したほうが早いような気がします。
'//
Sub TestFilterCopyw_oBlank()
Const SHEET_COPY As String = "Sheet2" '"登録"
Const SHEET_PASTE As String = "Sheet3" '"抽出"
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim Rng As Range
Dim rw As Long, j As Long
Dim OpRng As Range
'**************設定*****
Set Sh1 = Worksheets(SHEET_COPY)
Set Sh2 = Worksheets(SHEET_PASTE)
Set OpRng = Sh2.Range("A1") '貼り付け先/タイトル行を想定しているので2行目から
'******************
OpRng.CurrentRegion.ClearContents '貼り付け先のデータの削除
If Sh1.AutoFilterMode = False Then Exit Sub
Set Rng = Sh1.AutoFilter.Range
j = 2
Rng.Rows(1).Copy OpRng.Cells(1) 'タイトル行のコピー
For rw = 2 To Rng.Rows.Count
If WorksheetFunction.Subtotal(3, Sh1.Cells(rw, 2)) > 0 Then
OpRng.Cells(j, 1).Resize(, Rng.Columns.Count).Value = _
Sh1.Cells(rw, 2).Resize(, Rng.Columns.Count).Value
j = j + 1
End If
Next rw
End Sub
'//
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
オートフィルタで抽出したデータを別シートの最終行に追加させたい。
Excel(エクセル)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
7
VBA 空白行に転記する
Visual Basic(VBA)
-
8
VBAのコードがエラーになってしまいます。(エクセル)
Excel(エクセル)
-
9
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
エクセルVBAでフィルタ抽出部分のみのコピー
Excel(エクセル)
-
12
エクセルVBA 行追加時に自動で罫線を引きたい
Excel(エクセル)
-
13
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
14
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
15
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
16
データが入力されている隣のセルに当日日付と時刻を入力するExcel VBAプログラム
Visual Basic(VBA)
-
17
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
18
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
19
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
20
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロで最終行を取得してコピ...
-
数値に見えるものはすべて数値...
-
エクセルで空白行を削除する ...
-
VBAでの重複データに色付け
-
【VBA】条件に一致しない行を削...
-
Excel VBAでオートフィルタで抽...
-
エクセルのデータがない行には...
-
Excel VBA オートフィルタの結...
-
excel2021で実行できないマクロ...
-
EXCEL VBAでA列にある空白行よ...
-
【VBA】条件に一致しない行を削...
-
VBAで特定の行と一つ上の行を削...
-
EXCEL2007マクロ/オートフィル...
-
マクロにて指定の文字間の文字...
-
Excel97 指定した行だけマク...
-
エクセル住所録でフラッグの個...
-
EXCEL マクロで下から10行目ま...
-
Excel VBAで列を行に変換するには
-
エクセルVBAで3つ以上の複...
-
エクセルで頭が一緒のものは横...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで空白行を削除する ...
-
マクロで最終行を取得してコピ...
-
【VBA】条件に一致しない行を削...
-
数値に見えるものはすべて数値...
-
【VBA】条件に一致しない行を削...
-
エクセルのデータがない行には...
-
VB.net
-
Excel VBAでオートフィルタで抽...
-
マクロにて指定の文字間の文字...
-
VBAでの重複データに色付け
-
EXCEL VBAでA列にある空白行よ...
-
【至急】Excel 同一人物の情報...
-
Excel マクロ 検索結果を別シ...
-
Excel VBA オートフィルタの結...
-
Excel97 指定した行だけマク...
-
列から特定の文字列検索→該当以...
-
VBAで入力の結果を他のセルに反...
-
excel2021で実行できないマクロ...
-
エクセルのVBAで指定した行数の...
-
Access2003レポート:最終ペー...
おすすめ情報