オートフィルタ結果をコピーして、別シートに貼り付けるというマクロとなります。
しかし、これですと絞り込んだ対象の中に空白の行があると、空白行の上までの部分しかコピーをすることができません。
そこで、登録のシートの空白行は削除することなく、
抽出のシートで空白行を削除して貼り付けをしたいのですが、
こうしたことは可能でしょうか。
もし可能でしたら、どのようなコードを追記すればよろしいでしょうか。
よろしくお願い致します。
>
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
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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
オートフィルタで抽出したデータを別シートの最終行に追加させたい。
Excel(エクセル)
-
6
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
7
VBA 空白行に転記する
Visual Basic(VBA)
-
8
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
9
VBAのコードがエラーになってしまいます。(エクセル)
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
ある条件を満たすセルに対応する行のセル内容をコピーして・・
Visual Basic(VBA)
-
12
エクセルVBAでフィルタ抽出部分のみのコピー
Excel(エクセル)
-
13
エクセル マクロ 最終列までを全選択
Excel(エクセル)
-
14
データが入力されている隣のセルに当日日付と時刻を入力するExcel VBAプログラム
Visual Basic(VBA)
-
15
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
16
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
17
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで空白行を削除する ...
-
Excel VBAでオートフィルタで抽...
-
マクロで最終行を取得してコピ...
-
EXCEL VBAでA列にある空白行よ...
-
Excel97 指定した行だけマク...
-
VBA 複数列コンボボックス 値の...
-
エクセルで階層図を作る方法
-
エクセルのVBAについて
-
エクセルで特定の文字が入って...
-
エクセルで頭が一緒のものは横...
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
マクロの保存先、開いてるすべ...
-
エクセル連番自動印刷について
-
Excel マクロの編集がグレーに...
-
エクセル マクロ写真帳に一括で...
-
Excelマクロをバックグラウンド...
-
エクセルの表を複数枚印刷した...
-
エクセルの、記録を終了したマ...
-
パソコンの買い替えとデータ移行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで空白行を削除する ...
-
数値に見えるものはすべて数値...
-
エクセルのデータがない行には...
-
マクロで最終行を取得してコピ...
-
【VBA】条件に一致しない行を削...
-
【VBA】条件に一致しない行を削...
-
エクセルのVBAで指定した行数の...
-
VB.net
-
Excel VBAでオートフィルタで抽...
-
マクロにて指定の文字間の文字...
-
Excel97 指定した行だけマク...
-
EXCEL VBAでA列にある空白行よ...
-
excel2021で実行できないマクロ...
-
Excel 別ブックから該当データ...
-
VBAでの重複データに色付け
-
Excel VBA オートフィルタの結...
-
エクセルで階層図を作る方法
-
VBAで特定の行と一つ上の行を削...
-
【至急】Excel 同一人物の情報...
-
Excelで、マウスで範囲を選択し...
おすすめ情報