有条件地删除行(Microsoft Excel)
当您使用包含从其他人那里收到的信息的数据表时,如果满足特定条件,则可能需要删除行以减少表中的数据量。您可以通过几种方法来执行此任务。
第一种方法是使用Excel的自动筛选功能。如果您有删除行的简单标准,则此方法特别有用。当您打开自动筛选时,Excel在数据表的标题行中每个单元格的右侧放置下拉按钮。
使用这些下拉按钮,您可以指定要显示的记录。您应该选择一个过滤器值,该过滤器值将导致仅显示要删除的行。显示这些行后,您可以选择它们并使用菜单摆脱这些行。
当您关闭“自动筛选”时,仅剩下您想要的行。
另一种方法涉及使用宏为您执行删除操作。
如果必须对大量数据执行删除操作,或者经常执行删除操作,则此方法效果很好。以下宏可以基于键值删除行:
Sub DeleteRows() Dim strToDelete As String Dim rngSrc As Range Dim NumRows As Integer Dim ThisRow As Integer Dim ThatRow As Integer Dim ThisCol As Integer Dim J As Integer Dim DeletedRows As Integer strToDelete = InputBox("Value to Trigger Delete?", "Delete Rows") Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc.Column For J = ThatRow To ThisRow Step -1 If Cells(J, ThisCol) = strToDelete Then Rows(J).Select Selection.Delete Shift:=xlUp DeletedRows = DeletedRows + 1 End If Next J MsgBox "Number of deleted rows: " & DeletedRows End Sub
若要使用宏,请选择覆盖要检查的行的键范围。例如,如果要检查的键在G列中,并且您想检查5至73行,则可以选择范围G5:G73。当您运行宏时,它将询问您应检查的值。如果G5:G73范围内的任何单元格包含您指定的值,则该单元格的对应行将被删除。
显然,还有其他方法可以基于值删除行。要选择各种不同的方法,请查看Ozgrid的Dave Hawley的以下页面:
http://www.ozgrid.com/VBA/VBACode.htm
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2386)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: