Kris有一个工作表,其中数据中有大量空白行。他正在寻找一个简单的宏,该宏将删除所有完全空白的行。

有多种方法可以完成此任务。以下各节研究了摆脱这些麻烦行的所有各种想法。

选择空格

检查空白位置的一种快速方法是只选择数据中的空白。请按照下列步骤操作:

。选择所有正在使用的数据。

。按F5。 Excel将显示“转到”对话框。

。单击特殊。 Excel将显示“转到特殊”对话框。 (请参见图1。)

。选择空白单选按钮。

。单击确定。 Excel在您的起始范围内选择这些单元格(步骤1)

那是空白的。

。显示功能区的“主页”选项卡。

。单击删除工具。 Excel删除行。

使用此方法有一个很大的警告:它将删除任何单元格为空的任何行。换句话说,如果数据中仅有空白的行实际上是您要删除的行,则此方法是最好的。

如果您要保留的数据中散布着一些空单元格,请不要使用此方法,因为它也会删除这些行。

_排序

|如果您的数据不是由很多行组成(例如,只有十列或更少),则可以考虑仅对数据进行排序。如果将每一列都包含在排序规范中,那么最终将得到所有空白行,并且可以轻松删除它们。

如果数据中有很多列,并且您不介意添加辅助列,则可以在排序方法的一种变体中摆脱空白行。假设您的数据在A到P列中。在Q列中,输入以下公式之一:

=COUNTA(A1:P1)

=IF(COUNTBLANK(A1:P1)=16,"DELETE","")

使用哪一个都没关系;他们都会为您提供可以合作的信息。对于COUNTA公式,您只需要根据Q列排序并删除该列中带有0的任何内容。

对于COUNTBLANK公式,您需要将等值(16)更改为要考虑COUNTBLANK函数的任何列。 (在这种情况下,16是A:P范围内的列数,包括端值。)在公式到位后,您可以按列Q进行排序,然后只需删除该列中所有具有单词“ DELETE”的行。

排序方法的另一个变体是仅使用Excel的过滤功能来过滤列表,以仅在一个数据列中包含空白。 (例如,您可以过滤A列中的空白。)然后可以对其余的列进行排序,以便将整个空白行放在一个位置,然后删除这些行。

Macros

如果您需要经常删除空白行,那么您将需要认真考虑使用宏来完成这项艰苦的工作。您的宏可以轻松地添加到功能区或分配给快捷键,因此您可以非常轻松地调用它。

在本技巧的前面,我提到过,如果需要,可以使用“转到特殊位置”对话框来选择数据范围内的空白单元格,然后删除这些空白单元格所在的行。您可以在ver简单的宏中执行相同的操作:

Sub DeleteBlanks()

Dim R As Range

Set R = Range("A1:" & ActiveCell.SpecialCells(xlLastCell).Address)

R.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

但是请记住,即使您希望保留该行上的其他数据,该宏也会删除任何有空格的行。

更好的方法是对工作表中的每一行进行更全面的检查:

Sub DeleteBlankRows()

Dim lRows As Long     Dim J As Long

lRows = ActiveCell.SpecialCells(xlLastCell).Row     Application.ScreenUpdating = False     For J = lRows To 1 Step -1         If WorksheetFunction.CountA(Rows(J)) = 0 Then Rows(J).Delete     Next J     Application.ScreenUpdating = True End Sub

请注意,宏确定工作簿中使用的最后一个单元格,并将lRows值设置为等于该单元格所在行。然后For …​ Next循环遍历每一行(从最后一行到第一行)

并使用COUNTA函数确定该行上是否有任何内容。如果不是,则删除该行。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(254)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。