• ベストアンサー

Excelで行全体が空欄の場合に行を削除(詰める)

Excelシート上、幾つかの列があり、大量の行があります。 1行のうち、全ての列のセルが空の場合は、その行を削除して上に詰めたいですが、自動で削除する方法を教えてください。 Excel2010です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答No.2です。  先程の回答で、For Each c In .Resize(1)~Next cの部分の処理は必要無い事が判りましたので、下記の様に修正致します。 Sub QNo9024303_Excelで行全体が空欄の場合に行を削除_改() Dim ItemRow As Long, i As Long, myRange As Range, lastCell As Range ItemRow = 1 '項目名が入力されている行、即ち、実際のデータが入力されているの行の1つ上の行の行番号 With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With With ActiveSheet Set lastCell = .Cells.SpecialCells(xlCellTypeLastCell) If lastCell.Row = ItemRow Then GoTo labelE Set myRange = .Range(.Cells(ItemRow, 1), lastCell) End With With myRange '.Resize(1, 1).Value = " " & .Resize(1, 1).Value .AutoFilter For i = 1 To .Columns.Count .AutoFilter Field:=i, Criteria1:="=" Next i .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete .AutoFilter '.Resize(1, 1).Value = Mid(.Resize(1, 1).Value, 2) End With labelE: With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

okhotsk
質問者

お礼

ありがとうございます。 マクロ初めてでしたがコピペで実行できました。非常に助かりました。

その他の回答 (3)

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.3

全ての列で空白でフィルタすれば、全ての列で空白の行が 抽出されると思います。その行を削除すればよいだけでは? ※左端の列で空白セルがあると、うまく抽出できないので、左端に列を  追加して連番をふるなどする必要があります。 あ、自動で削除したいんですね。失礼しました。 自動っていうのはどのタイミングで削除したいんですか? ファイルを開くタイミングとか、ボタンを作成して押したタイミングとか。 削除する作業自体1回きりなら、先に紹介させて頂いた方法で 削除すればよいかと思います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>自動で という事であれば、下記の様なマクロを使われては如何でしょうか。 Sub QNo9024303_Excelで行全体が空欄の場合に行を削除() Dim ItemRow As Long, c As Range, i As Long, myRange As Range, lastCell As Range ItemRow = 1 '項目名が入力されている行、即ち、実際のデータが入力されているの行の1つ上の行の行番号 With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With With ActiveSheet Set lastCell = .Cells.SpecialCells(xlCellTypeLastCell) If lastCell.Row = ItemRow Then GoTo labelE Set myRange = .Range(.Cells(ItemRow, 1), lastCell) End With With myRange For Each c In .Resize(1) c.Value = " " & c.Value Next c .AutoFilter For i = 1 To .Columns.Count .AutoFilter Field:=i, Criteria1:="=" Next i .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete .AutoFilter For Each c In .Resize(1) c.Value = Mid(c.Value, 2) Next c End With labelE: With Application .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

データベースになっていれば、「空白」を表示しないようにして、 別シートにコピーすればいいだけの話ですけど・・・。 http://kokodane.com/kihon8.htm

okhotsk
質問者

補足

ありがとうございます。 教えていただいたリンク先のリスト作成ですが、Excel2010では同様のコマンドが見つからず続行できません。2010でも可能でしょうか。 念のためですが、この方法で、別シートにコピーする際「空白」を表示しないように設定するとき、行全体が空白のみ、その行を削除することはできるでしょうか。 1行内にデータ有と空欄が混在しているものがあり、その行全体は保留します。1行全体が完全に空欄の場合のみ1行を削除したいです。 空欄セルを一律削除する方法はあるようですが。。。

関連するQ&A