2017-11-07 23 views
0

列BからAD(ラストロー)が空白の行をすべて削除しようとしています。私のExcelシートでは、行の数の2〜3列のADは空白なので、それらの行を削除しようとしています。私は以下のコードを使用しようとしている:列Bから空白行を削除

Sub T() 
    Dim rng As Range 

    Set rng = Range("B1:AC10402") 
    rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
End Sub 

ませ成功ん

+0

は、行全体が空白の場合、または一部のセルが空白の場合のみです。 –

+0

列A以外に行全体が空白です。 – James

+0

したがって、基本的に、任意の行の列bが空白の場合は削除しますか? –

答えて

0

これは、列Bのすべての空白行を削除します

Dim LastRow, i As Integer 
LastRow = activesheet.Cells(activesheet.Rows.Count, "A").End(xlUp).Row 
For i = LastRow To 1 Step -1 
    If WorksheetFunction.CountA(Range("B" & i)) = 0 Then 
     Range("B" & i).EntireRow.Delete 
    End If 
Next i 

列AC、列Bがある場合、これはすべての空白行を削除空白

Dim LastRow, i As Integer 
LastRow = activesheet.Cells(activesheet.Rows.Count, "A").End(xlUp).Row 
For i = LastRow To 1 Step -1 
    If WorksheetFunction.CountA(Range("B" & i & ":" & "AC" & i)) = 0 Then 
     Range("B" & i & ":" & "AC" & i).EntireRow.Delete 
    End If 
Next i 
+0

テキストはA列ですが、Bから最後の行までは空になるので、これらの行を削除しようとしています。 – James

+0

.rowsの2つのコードでコンパイルエラーが発生しました – James

+0

oops、更新された回答を試してください。 –

1

は、このコードを試してみてください。

Sub DeleteBlankRows() 
Dim i As Long 
Dim lastRow As Long: lastRow = 10 'here you have to specify last row your table uses 
For i = lastRow To 1 Step -1 
    If Cells(i, Columns.Count).End(xlToLeft).Column = 1 Then 
     Rows(i).Delete 
    End If 
Next i 

End Sub 

あなたはAD経由の列、行の中に空虚のためにBを確認する必要があることを指定

少し説明。このコードCells(i, Columns.Count).End(xlToLeft).Columnは、最初の列から始まって最も右側の列、空でないセルを返します。あなたがA cloumnを検討しているときに、行全体が空であるか、最初の列にデータがあると、1を返します。これは誤解を招きます。しかし、ここにはありません。なぜなら、Bで始まる列を考えているからです。したがって、1が返された場合は、行が空であり、削除する必要があることを意味します。

関連する問題