好了,所以這裏是我的工作設置錶行:宏在Excel中刪除包含全0
我需要一個宏刪除包含四個0的行,唯一的辦法我能想到的此刻需要的細胞是空的,即「」
0是否真正算作一個字符串或數字或者是它等同於「」?
我認爲這個問題可能與這樣的事實,我的一些0的都是文本字符串和其他人的數字,我只是沒想到這會事宜。
好了,所以這裏是我的工作設置錶行:宏在Excel中刪除包含全0
我需要一個宏刪除包含四個0的行,唯一的辦法我能想到的此刻需要的細胞是空的,即「」
0是否真正算作一個字符串或數字或者是它等同於「」?
我認爲這個問題可能與這樣的事實,我的一些0的都是文本字符串和其他人的數字,我只是沒想到這會事宜。
在這裏,我得到了一個給你。試試這個。
Public Sub removeRow()
Dim row As Integer
'Set the start row.
row = 1
'Loop all row from sheet until colum "A" cell is blank
Do While Sheets("sheetname").Range("A" & row) <> ""
'If all cell are 0.
If Sheets("sheetname").Range("A" & row) = 0 And Sheets("sheetname").Range("B" & row) = 0 And Sheets("sheetname").Range("C" & row) = 0 And Sheets("sheetname").Range("D" & row) = 0 Then
'Delete entire row
Sheets("sheetname").Range("A" & row).EntireRow.Delete
Else
'Increse row
row = row + 1
End If
Loop
End Sub
我得到運行時錯誤「13」:類型不匹配。上線'不要當表(「發佈」),範圍(「A」&行)<>「' –
我得downvote這個答案。通過而不是落後與循環前進,這個代碼將跳過任何在這個例子中,這段代碼會丟失(而不是刪除)第5行和第10行。 – TMH8885
是的,我修改了我的錯誤代碼,現在它工作的很好,謝謝你的建議。 –
試試這個小宏.....它會檢查每行的部分的總和:
Sub RowKiller()
Dim N As Long, i As Long, wf As WorksheetFunction
Dim rng As Range
N = Cells(Rows.Count, "A").End(xlUp).Row
Set wf = Application.WorksheetFunction
For i = N To 2 Step -1
Set rng = Range(Cells(i, 1), Cells(i, 4))
If wf.Sum(rng) = 0 Then
rng.EntireRow.Delete
End If
Next i
End Sub
運行時錯誤'1004':無法獲取WorksheetFunction類的Sum屬性 –
創建行的字符串,刪除然後做一件刪除。當你做這種方式無需向後輪詢,它應該是很多不是按照行刪除行更快:
Sub DeleteRows()
Dim i As Long, DelRange As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'Doesn't matter which way you go when you delete in one go
If CLng(Cells(i, 1)) = 0 And CLng(Cells(i, 2)) = 0 And CLng(Cells(i, 3)) = 0 And CLng(Cells(i, 4)) = 0 Then DelRange = DelRange & "," & i & ":" & i
Next i
Range(Right(DelRange, Len(DelRange) - 1)).Delete
End Sub
二手CLng函數的字符串零轉換爲長期零供測試。
警告的小字雖然,CLng函數(activecell)將於如果activecell爲空,因此空行也將被刪除,返回0。
編輯:遇到字符串時,在測試則IsNumeric把應對錯誤(不能CLng函數真正的字符串)
Sub DeleteRows()
Dim i As Long, DelRange As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'Doesn't matter which way you go when you delete in one go
If IsNumeric(Cells(i, 1)) And IsNumeric(Cells(i, 2)) And IsNumeric(Cells(i, 3)) And IsNumeric(Cells(i, 4)) Then
If CLng(Cells(i, 1)) = 0 And CLng(Cells(i, 2)) = 0 And CLng(Cells(i, 3)) = 0 And CLng(Cells(i, 4)) = 0 Then DelRange = DelRange & "," & i & ":" & i
End If
Next i
Range(Right(DelRange, Len(DelRange) - 1)).Delete
End Sub
所以你想刪除行2.4.5.9.10? –
我只想寫一個循環,通過每一行去,並刪除它,如果細胞的總和= 0 – Jared