- ベストアンサー
【マクロ等】4行ごとに行を消したいのですが…
いつもお世話になっております。 最近Excelで作業をすることが多いのですが相手の会社より頂いたデーターがテンプレートの違い上読み込むと4行ごとにデータが表示されます。 (参考図) ■A B C D E F (1)100 (2) (3) (4) (5)200 (6) (7) (8) (9) (10)1000 … と言った感じで4行の空欄が入ってしまいます。 いつもこの4行を行の削除でマウスを右クリックして削除しているのですがデーター行が2000とかを超えると血の気が引きます。。。 どうにか一括で間4行を削除することはできないでしょうか? 必ずデータはA1からはじまり4行ごとに間が空きA5,A10…と数値が入る形です。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「4行ごとに行を消したいのですが」とのご要望ですが、「A列が空白の行を削除する」というルールでも良いですか? A列を選択して「データ」→「フィルタ」→「オートフィルタ」でオートフィルタをかけます。プルダウンを開いて(空白セル)を選択するとA列が空白の行だけが表示されるので、行をまとめて選択して「右クリック」→「削除」で消せます。 余分ですがもしマクロが良いなら、以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択します。 Sub macro2() Dim idx As Long With ActiveSheet For idx = .Range("A65536").End(xlUp).Row To 1 Step -1 If .Cells(idx, "A").Value = "" Then .Cells(idx, "A").EntireRow.Delete End If Next idx End With End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 私も、#1さんのおっしゃるように、オートフィルタで行えばよいと思いますね。 私なら、<空白以外のセル>を出しておいて、コピーで、別のシートに貼り付けてしまいます。あえて、オリジナルデータはいじりません。 また、マクロなら、完全な空白のセルを削除するなら、以下のようになります。これですと、一瞬に消えます。ただし、A列に対して判定していますから、注意してください。 Sub BlankRowDelete() Application.ScreenUpdating = False With Range("A1", Range("A65536")) On Error Resume Next .SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 End With Application.ScreenUpdating = True End Sub
Sub Test() Dim v As Variant For Each v In Range("A1", Range("A65536").End(xlUp)).Cells If v.Value = "" Then Range(v, v.Offset(3)).Delete End If Next End Sub 4行だけならこれでもできる。
お礼
マクロばかり考えていましたがオートフィルタで簡単に出来ました!! 以前より作業効率も十倍以上に上がりそうです!! #1~3の皆さんありがとう御座いました!!