如何使用VBA删除行(14种方法)

  • Share This
Hugh West

如果你正在寻找一些最简单的方法来删除行,使用 VBA 那么你就来对地方了。

让我们深入了解一下这篇主要文章。

下载工作手册

VBA删除行.xlsm

使用VBA删除行的14种方法

在这里,我有三个数据表来展示使用以下方法删除行的情况 VBA 第一个表格包含了一些 产品 的公司和他们的 尺寸 , 价格 .

第二个是有一些 产品代码 和它们相应的 产品尺寸 价格

而最后一个则包含了一些 项目名称 和他们各自的 开始日期 费用 .

为了创作这篇文章,我使用了 微软Excel 365 版本,你可以根据你的方便使用任何其他版本。

方法一:使用VBA删除单一行

比方说,你想删除包含以下内容的行 产品 鞋子1。 而要删除这个单行,你可以按照这个方法。

步骤-01 :

转到 开发商 标签>>。 视觉基础 选项

然后,在 Visual Basic编辑器 将打开。

转到 插入 标签>>。 模块 选项

在这之后,一个 模块 将被创建。

步骤-02 :

➤ 写出以下代码

 Sub dltrow1() Worksheets("Single").Rows(7).EntireRow.Delete End Sub 

在这里。 "单人" 是工作表的名称,而 行数(7) 将选择行号。

.EntireRow.Delete 将删除整个第7行。

➤按 F5

结果 :

通过这种方式,你将删除包含以下内容的行 产品 名称 鞋子1 .

阅读更多。 如何在Excel中删除行:7种方法

方法-2:使用VBA删除多条行

如果你想删除多条记录,比如包含有 产品 名称 鞋子1 , 鞋子2。 鞋子3 ,然后你可以按照这个 VBA 代码。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow2() Rows(13).EntireRow.Delete Rows(10).EntireRow.Delete Rows(7).EntireRow.Delete End Sub 

在这里,第13、10和7行将被删除,在连续写行号时,你必须像这样的代码一样从最后一行的行号写到第一行的行号。

否则,在删除第一行如第7行后,该行下面的其余行将向上移动一行,因此第10行将成为第9行,而第13行将成为第12行。 由于这个原因,你将无法删除正确的行。

➤按 F5

结果 :

然后,你将删除包含以下内容的行 产品 名称 鞋子1 , 鞋子2。 鞋子3 .

阅读更多。 如何删除Excel中的多条行(3种方法)

方法三:通过选择删除一个行

在这里,我将展示删除某行的活动单元格的方法。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow3() ActiveCell.EntireRow.Delete End Sub 

它将删除有活动单元格的那一行。

➤ 保存代码。

步骤-02 :

➤ 选择要删除的一行中的任何一个单元格(在这里我选择了单元格 B7 )

转到 开发商 标签>>。 巨集 选项

在这之后, 宏观 向导将打开。

➤选择 巨集名称 dltrow3 并按 运行

结果 :

之后,你将删除包含以下内容的行 产品 名称 鞋子1 .

方法四:删除选择中的所有行

对于删除一个选区的所有行,你可以按照这个方法。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow4() Selection.EntireRow.Delete End Sub 

它将删除所有选择的行。

➤ 保存代码。

步骤-02 :

➤ 选择你要删除的行的范围(在这里,我选择了范围 B7:D9 )

转到 开发商 标签>>。 巨集 选项

在这之后, 宏观 向导将打开。

➤选择 巨集名称 dltrow4 并按 运转

结果 :

然后,你将删除包含以下内容的行 产品 名称 鞋子1 , 夹克1。 夹克2 .

阅读更多。 如何在Excel中删除选定的行(8种方法)

方法五:删除任何单元格为空的行

这里,我有一个空单元格,它是 B9 (我为这个方法删除了这个单元格的值),并使用一个 VBA 代码我将删除有以下内容的行 B9 细胞。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow5() Range("B5:D13").SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub 

它将删除范围内的所有行 "B5:D13" 有任何空白单元格。

➤按 F5

结果 :

然后,你就可以删除包含空白单元格的那一行。

阅读更多。 如何删除Excel中的空行(11种方法)

方法-6:如果整个行是空的,就删除一个行

这里,我有一个空单元格,它是 B9 (我已经删除了这个方法的值),和一个空行,即第12行(我已经删除了这个方法的值),并使用一个 VBA 代码和 COUNTA函数 我将删除空的那一行。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow6() Dim cell As Range For Each cell In Range("B5:D13") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End If Next cell End Sub 

"B5:D13" 是数据范围和 循环将对该区域的每个单元格起作用。

CountA(cell.EntireRow) 将返回非空白单元格的数量,当它变成0时,该行将被删除。

➤按 F5

结果 :

之后,你将能够删除空行,但它不会删除任何没有该行所有单元格的空行。

阅读更多。 如何使用VBA来删除Excel中的空行

方法-7:删除每第n行

你可以按照这个方法删除每第n行(本例中为第3行)。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow7() rc = Range("B5:D13").Rows.Count For i = rc To 1 Step -3 Range("B5:D13") Rows(i).EntireRow.Delete Next i End Sub 

"B5:D13" 是数据范围和 rc 将返回该范围的总行数,该行数为 9 .

在这里, 循环将从最后一行开始,该行是 rc 9 在这种情况下,以第一行结束。

第3步 将有助于删除每个 第三届 在这个范围内的行。

➤按 F5

结果 :

然后,你将删除包含以下内容的行 产品 名称 鞋子1 , 鞋子2。 鞋子3 .

阅读更多。 如何删除Excel中的第n行(最简单的6种方法)?

类似的阅读。

  • 如何用Excel VBA删除选定的行(一步一步的指导原则)
  • 删除Excel中未使用的行(8种简单方法)
  • 如何删除Excel中的隐藏行(3种方法)
  • 删除Excel中的无限行(5种简单方法)
  • 如何在Excel中删除一直存在的行(4种简单的方法)

方法8:根据单元格值删除行

在这个方法中,我将删除有一个特定值的行 衬衫2 .

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow8() Dim cell As Range For Each cell In Range("B5:D13") If cell.Value = "Shirt 2" Then cell.EntireRow.Delete End If Next cell End Sub 

"B5:D13" 是数据范围和 循环将对该区域的每个单元格起作用。

如果某行的任何单元格包含值 "衬衫2" 则该行将被删除。

➤按 F5

结果 :

通过这种方式,你将删除包含以下内容的行 产品 名称 衬衫2 .

阅读更多。 在Excel中,如果单元格中含有数值,VBA Macro就会删除行(2种方法)

方法-9:删除重复的行

这里,我有两行有一个 产品代码 97375 所以我想删除这些行中的一行,下面有一个红框标记。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow9() Range("B5:D13").RemoveDuplicates Columns:=1 End Sub 

在这里。 "B5:D13" 是数据范围和 列:=1 意味着它将只在一列(即起始列)中搜索重复的值。 B栏 但如果你也想在其他栏目中搜索,你可以根据你的需要使用这个数字。

➤按 F5

结果 :

之后,你将能够删除与另一行相似的行。

阅读更多。 如何用VBA删除Excel中的重复行(8种有效方法)

方法-10:删除表中的行

假设,你有以下表格,其名称为 表1 现在你想删除该表的第6行。 要做到这一点,你可以按照以下方法。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow10() ActiveWorkbook.Worksheets("Table").ListObjects("Table1").ListRows(6).Delete End Sub 

在这里。 "表" 是工作表的名称。 "表1" 是表的名称,而 6 是你要删除的这个表的行号。

➤按 F5

结果 :

通过这种方式,你将删除该表中你想要的行。

阅读更多。 如何使用Excel VBA删除基于一列的重复行

方法-11:过滤后删除可见的行

在这里,我有一个数据表,它的过滤方式是 价格 栏的值超过了 $1,500.00 而我想在过滤后删除所有可见的行。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow11() Range("B5:D13").SpecialCells(xlCellTypeVisible).EntireRow.Delete End Sub 

在这里。 "B5:D13" 是数据范围。

➤按 F5

现在,所有过滤后的可见行都将被删除。 现在你可以通过选择以下方式将隐藏的行带回来 过滤器 签在 价格 列。

➤ 点击 选择所有 选择

➤按 认可

结果 :

最后,你将在数据表中得到隐藏的行。

阅读更多。 如何在Excel中用VBA过滤和删除行(2种方法)

方法-12:根据最后的活动单元删除行

在这里,我的最后一个活动单元格是单元格 B13 而我想删除这个有以下数据表的最后一个活动单元。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow12() Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete End Sub 

在这里。 2 途径 B栏 我在其中有我的活动细胞,你可以根据你的需要改变号码。

➤按 F5

结果 :

通过这种方式,你将删除你最后的活动行。

阅读更多。 Excel VBA代码根据多个单元格值删除行(3个标准)

方法-13:删除有任何字符串的行

假设,你想删除有任何字符串的行,要做到这一点,你可以按照这个方法。

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow13() Dim FirstRow As Long Dim LastRow As Long Dim FirstColumn As Long Dim sheet As Worksheet Dim Rng As Range FirstRow = 5 FirstColumn = 2 Set sheet = Worksheets("String") With sheet With .Cells LastRow = .Find(What:="*", LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row LastColumn = .Find(What:="*",LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column End With Set Rng = .Range(.Cells(FirstRow, FirstColumn), .Cells(LastRow, LastColumn)) End With On Error Resume Next Rng.SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow.Delete End Sub 

在这里。 "字符串" 是工作表的名称,这个数据范围的第一行编号是 5 而起始列号为 2

ǞǞǞ 语句可以让你为整个系列的语句一次性指定一个对象或用户定义的类型。

出错时恢复下一步 语句指定,当运行时错误发生时,控制权将转到发生错误的语句之后的语句。

最后一行 最后一栏 返回数据范围的最后一行和一列。

SpecialCells(xlCellTypeConstants, xlTextValues) 将选择范围内有任何文本值的行。

➤按 F5

结果 :

之后,你将删除有任何文本字符串的行。

阅读更多。 删减行的Excel快捷方式(附赠技巧)

方法-14:基于日期的删除行

在这里,我将删除有特殊日期的行 11/12/2021 (mm/dd/yyyy)在这种方法中使用 DATEVALUE函数 .

步骤-01 :

➤关注 步骤-01 方法一

 Sub dltrow14() Dim FirstRow As Long Dim LastRow As Long Dim CriteriaColumn As Long Dim myDate As Date Dim sheet As Worksheet Dim i As Long Dim myRowsWithDate As Range FirstRow = 5 CriteriaColumn = 3 myDate = DateValue("11/12/2021") Set sheet = Worksheets("Date") With sheet LastRow = .Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByRows。SearchDirection:=xlPrevious).Row For i = LastRow To FirstRow Step -1 With .Cells(i, CriteriaColumn) If .Value = myDate Then If Not myRowsWithDate Is Nothing Then Set myRowsWithDate = Union(myRowsWithDate, .Cells) Else Set myRowsWithDate = .Cells End If End WithNext i End With If Not myRowsWithDate Is Nothing Then myRowsWithDate.EntireRow.Delete End Sub 

在这里。 "日期" 是工作表的名称,这个数据范围的第一行编号是 5 和标准列(哪一列有日期)的数字是 3 .

ǞǞǞ 语句可以让你为整个系列的语句一次性指定一个对象或用户定义的类型。

出错时恢复下一步 语句指定,当运行时错误发生时,控制权将转到发生错误的语句之后的语句。

最后一行 返回数据范围的最后一行,这里的 循环将从最后一行开始,该行是 最后一行 6 在这种情况下,以第一行结束。

价值评估(DATEVALUE 将文本日期转换为数值。

在这里。 联盟 将返回对应于有日期的单元格的多个范围的联合。 11/12/2021 ,最后,这些范围将被删除。

➤按 F5

结果 :

之后,你将删除具有某个日期的行的 11/12/2021 .

相关内容。 Excel VBA删除有特定数据的行(9例)

练习部分

为了方便自己的练习,我们提供了一个 实践 的工作表中,像下面这样,在一个名为 实践 .请你自己去做。

总结

在这篇文章中,我试图涵盖最简单的方法来使用 VBA 有效地删除行。 希望你会发现它很有用。 如果你有任何建议或问题,欢迎在评论区分享。

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.