Excel VBA代码,用于筛选特定列并从其他列中删除数据
我试图根据“IBM_软件”的名称筛选excel工作表中H列中的数据,并删除同一工作表J列中的层次结构数据。下面是我使用的代码,但它没有按照我想要的方式工作,它也删除了顶部的行,这很糟糕Excel VBA代码,用于筛选特定列并从其他列中删除数据,excel,vba,Excel,Vba,我试图根据“IBM_软件”的名称筛选excel工作表中H列中的数据,并删除同一工作表J列中的层次结构数据。下面是我使用的代码,但它没有按照我想要的方式工作,它也删除了顶部的行,这很糟糕 Sub Delete_Rows_Based_On_Value() 'Apply a filter to a Range and delete visible rows 'Source: https://www.excelcampus.com/vba/delete-rows-cell-values/ ''' D
Sub Delete_Rows_Based_On_Value()
'Apply a filter to a Range and delete visible rows
'Source: https://www.excelcampus.com/vba/delete-rows-cell-values/
'''
Dim ws As Worksheet
'Set reference to the sheet in the workbook.
Set ws = ThisWorkbook.Worksheets("BDDASHBTEMPLATEFYTD21BILLING3")
ws.Activate 'not required but allows user to view sheet if warning message appears
'Clear any existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'1. Apply Filter
ws.Range("A:P").AutoFilter Field:=8, Criteria1:="IBM_Software"
'2. Delete Rows
Application.DisplayAlerts = False
Sheets("BDDASHBTEMPLATEFYTD21BILLING3").AutoFilter.Range.Offset(1).Delete xlShiftUp
Application.DisplayAlerts = True
'3. Clear Filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
您的解决方案不起作用可能意味着您遇到了错误。工作表中的每一行也不太可能都有数据。如果使用每一行,则不能偏移一行。我将让您决定如何找到最后一行(LR)。此解决方案仅删除筛选的行,您的解决方案将删除所有行
ws.Range("A1:P" & LR).AutoFilter Field:=8, Criteria1:="IBM_Software"
ws.Range("A1.P" & LR).Offset(1,0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
感谢您的回复,但在我的情况下,我只想在过滤H列数据后删除特定的J列。不幸的是,在这种情况下,您的代码不正确,这不是您的原始语句,也不是您的代码所代表的内容。如果不删除整列,则无法删除J列中的数据。如果要清除数据,则需要
ClearContents
。您仍然希望使用SpecialCells
仅清除过滤的数据。是的,先生,我应用了{Worksheets(“BDDASHBTEMPLATEFYTD21BILLING3”)。Columns(10)。ClearContents仅清除所需的过滤数据ws.Range(“J2:J”&LR)。SpecialCells(xlCellTypeVisible)。ClearContents
。这跳过标题。