Excel中用VBA實現刪除空行和空列 在exce中刪除空行和空列的方法有很多,相對而言刪除空行較為簡單,只需進行篩選,將空白行篩選出來,刪除即可,但要刪除空列比較困難。因為你不能按列進行篩選刪除。Excel中沒有這
個功能。當然你可以用另外一種方法,就是按列進行排序將空白列排序在一起,然后刪除,但這種方法面臨着列的順序被打亂的問題,吃力不討好。本文將利用Excel中強大VBA功能來完成刪
除空白行和列的方法。
步驟一、打開excel,按ALT+F11組合建,調出VBA程序窗口
步驟二、在插入菜單中,選擇模塊,插入一個模塊
步驟三、在新建模塊中的代碼窗口將以下代碼復制進去
‘刪除空行
Sub DeleteEmptyRows() Dim LastRow As Long, r As Long LastRow = ActiveSheet.UsedRange.Rows.Count LastRow = LastRow + ActiveSheet.UsedRange.Row -1
For r = LastRow To 1 Step -1 If WorksheetFunction.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r End Sub ’刪除空列
Sub DeleteEmptyColumns() Dim LastColumn As Long, c As Long LastColumn = ActiveSheet.UsedRange.Columns.Count LastColumn = LastColumn + ActiveSheet.UsedRange.Column For c = LastColumn To 1 Step -1 If WorksheetFunction.CountA(Columns(c)) = 0 Then Columns(c).Delete Next c End Sub
完成后關閉VBA窗口,選擇保存,並保存Excel文件。
步驟四、保持步驟三中的excel文件處於打開狀態,打開需要處理excel文件,執行上述兩個宏即可。
用VBA刪除空行和空列 作者:未知 文章來源:未知 點擊數:3063 更新時間:2009-1-13 16:32:10
在Excel中刪除空行和空列的方法有很多,下面的方法是用VBA代碼來刪除工作表指定區域中的空行和空列:
Option Explicit Sub Delete_Empty_Rows() Dim rnArea As Range Dim lnLastRow As Long, i As Long, j As Long Application.ScreenUpdating = False lnLastRow = Selection.Rows.Count Set rnArea = Selection j = 0 For i = lnLastRow To 1 Step -1 If Application.CountA(rnArea.Rows(i)) = 0 Then rnArea.Rows(i).Delete j = j + 1 End If Next i rnArea.Resize(lnLastRow - j).Select Application.ScreenUpdating = True End Sub Sub Delete_Empty_Columns() Dim lnLastColumn As Long, i As Long, j As Long Dim rnArea As Range Application.ScreenUpdating = False lnLastColumn = Selection.Columns.Count Set rnArea = Selection j = 0 For i = lnLastColumn To 1 Step -1 If Application.CountA(rnArea.Columns(i)) = 0 Then rnArea.Columns(i).Delete j = j + 1 End If Next i rnArea.Resize(, lnLastColumn - j).Select Application.ScreenUpdating = False End Sub
在運行代碼前,先選擇需要刪除空行和空列的區域。如果要刪除空行,則運行Delete_Empty_Rows(),指定區域中的空行將被刪除。注意所謂空行是在指定區域中的,如果在指定區域內是
空行,而在指定區域外不是空行,那么這些空行還是將會被刪除。刪除空列則運行Delete_Empty_Columns()。
2.
Sub DeleteEmpty()
Call DeleteEmptyRow
Call DeleteEmptyColmn
End Sub
Sub DeleteEmptyRow()
'刪除第2行到第95行之間C列后沒有值的空行
Dim i As Integer
For i = 94 To 12 Step -1
If Cells(i, 3) = "" Then
Sheets("sheet1").Rows(i).Delete
End If
Next i End Sub
'刪除第6行沒有值的空列
Sub DeleteEmptyColmn()
Dim i As Integer
For i = 30 To 4 Step -1
If Cells(6, i) = "" Then
Sheets("sheet1").Columns(i).Delete
End If
Next i
End Sub
謝謝分享。其實用定位刪除較快,如刪除第2行到第95行之間C列沒有值的空行
Range("C2:C94").SpecialCells(4).EntireRow.Delete
