我想通過一個名為“Sorted_Duplicate_Removal”的表檢查錯誤、空白和 0 值,然后從表中洗掉這些行。不幸的是,每次我運行我的代碼時:
Dim i As Integer
For i = 2 To Worksheets("Resource Group Table").ListObjects("Sorted_Duplicate_Removal").DataBodyRange.Rows.Count 1
If Worksheets("Resource Group Table").Range("X" & i).Text = "#N/A" Then
Worksheets("Resource Group Table").ListObjects("Sorted_Duplicates_Removal").ListRows(i - 1).Delete
Else
If Worksheets("Resource Group Table").Range("X" & i).Value = "0" Then
Worksheets("Resource Group Table").ListObjects("Sorted_Duplicates_Removal").ListRows(i - 1).Delete
End If
End If
Next i
我收到關于以“.delete”結尾的任何一行的“超出范圍”的錯誤。任何資訊,將不勝感激
uj5u.com熱心網友回復:
洗掉 Excel 表中的篩選行
- 適當調整列:只有表格以 column 開頭
A,則 field24表示 columnX。您也可以改用標題,例如.ListColumns("Whatever").Index.
Option Explicit
Sub DeleteFilteredRows()
Dim Criteria As Variant: Criteria = Array("", "0", "#N/A")
Dim tbl As ListObject
Set tbl = ThisWorkbook.Worksheets("Resource Group Table") _
.ListObjects("Sorted_Duplicate_Removal")
Dim dvrg As Range ' Data Visible Range
With tbl
If .ShowAutoFilter Then
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
End If
.Range.AutoFilter 24, Criteria, xlFilterValues
On Error Resume Next
Set dvrg = .DataBodyRange.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
.AutoFilter.ShowAllData
End With
If Not dvrg Is Nothing Then dvrg.Delete xlShiftUp
End Sub
uj5u.com熱心網友回復:
我剛剛測驗了這個,似乎作業......表格有點棘手......
主要思想是使用DataBodyRange.Rows(i - 1).Delete而不是.ListRows(i - 1).Delete
例子:
Sub test()
Dim i As Integer
For i = Worksheets("Resource Group Table").ListObjects("Sorted_Duplicate_Removal").DataBodyRange.Rows.Count 1 To 2 Step -1
With ActiveSheet.ListObjects("Sorted_Duplicate_Removal")
If Worksheets("Resource Group Table").Range("X" & i).Text = "#N/A" Then
.DataBodyRange.Rows(i - 1).Delete
Else
If Worksheets("Resource Group Table").Range("X" & i).Value = "0" Then
.DataBodyRange.Rows(i - 1).Delete
End If
End If
End With
Next i
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/449911.html
上一篇:如何洗掉Excel表格中的一行,該表格位于另一個作業表上,該表格是使用VBA使用Userform搜索欄位找到的?
下一篇:將Excel公式復制到新范圍
