Excel VBA删除行有时,当您处理多个电子表格时,您可能希望删除一些行,因为它们是空白的、重复的或不再需要。Excel VBA是一种功能强大的编程语言,使我们能够轻松有效地删除行。或者更重要的是,轻松地自动化任何重复的任务。我们将指导您如何使用VBA自动删除Excel中的行。我们假设您熟悉MS Excel VBA的基础知识。

如果你是Excel VBA的新手,我们建议你先在Excel VBA上获取这门基本课程, 也许,用这个VBA教程刷新基本概念

对于我们在本教程中使用的所有示例,这里有一些通用说明:

  1. 首先打开现有的Excel工作簿,具有数据。
  2. 同时按Alt+F11将打开VBA编辑器。
  3. 然后使用insert菜单插入一个模块。
  4. 要尝试这些示例,请将本教程中给出的代码复制并粘贴到代码窗口中。或者,您可以手动键入代码。
  5. 最后,将文件保存为宏。

执行代码按F5功能键。现在让我们转移到在Excel中删除行的实际方面。

使用Excel VBA删除特定行

子deleterow1()行(10).delete结束子

在这个程序中,第10行从活动工作表中完全删除。子例程的名称是DeleteRow1()。Rows(10)表示行号为10。它有一个关联的delete函数,当执行该函数时将完全删除相关的行。

使用Excel VBA删除多行

子DeleteRow2()行(“20”)。删除结束子

编写此代码是为了删除行号从10到20的多行。Rows(“10:20”)指从行号10到行号20的行范围。接下来,让我们转向使用if条件语句和循环的更高级程序。

使用Excel VBA的某些条件删除行

subdeleterow3 () Dim lRow lRow = 100 Do While lRow >= 1 If Cells(lRow,1) Mod 3 = 0 Then Rows(lRow)。删除lRow = lRow - 1循环结束子

在此程序中,我们使用暗淡关键字声明变量lrow,引用最后一行。lRow is assigned the value 100. Then we use the ‘Do While’ loop to iterate through the rows starting from row number 100 backwards to row number 1. In each loop, the value at cell with row number equal to lRow and Column 1 is divided by 3. If it’s completely divisible by three, that row is entirely deleted. Next we decrement lRow by 1. We loop on this till the condition evaluates to false.

删除单元格类型为字符串的整行

Sub DeleteRow4 () Dim rng As Range, cell_search As Range, del As Range Set rng = Intersect(Range("A1:C20"), activessheet . usedrange) For Each cell_search In rng If (cell_search. value) = "Apple" Then If del Is Nothing Then Set del = cell_search Else:Set del = Union(del, cell_search) End If End If Next cell_search On Error Resume Next del. entirrow . delete End Sub .删除结束子

在此程序中,我们声明了三个数据类型范围的变量。这里的范围(“A1:C20”),返回所选单元格范围。ActiveSheet。UsedRange指所选的工作表。intersect函数返回存储在变量rng中的range对象。我们使用“for循环”来遍历单元格。在这个程序中,当单元格值等于“Apple”时,我们将del赋值为单元格对象。如果值不等于“Apple”,则使用联合函数将del与cell_search联合起来。delete将删除具有del对象的行。

在Excel中使用VBA删除工作表中的每个第三行

Sub DeleteRow5() Dim X,Y X = 1 Y = 1 Set Rng1 = Selection For xCounter = 1 To Rng1.Rows.Count If Y = 3 Then Rng1.Cells(x).EntireRow.Delete Y = 1 Else X = X + 1 Y = Y + 1 End If Next xCounter

在此程序中,我们声明了两个变量x和y。值1分配给变量。'for'循环从值1到电子表格选择中的行总数。x和y递增1,每当y不等于3时,y等于3时,删除当前行,y重置为1.此过程达到达到最后一行的最后行。

如何在Excel中使用VBA删除重复的行

现在我们转到一个更复杂的程序,它需要大量的数据。注意,您需要熟悉应用程序对象及其重要功能和数据成员。要掌握这段代码,成员数据和成员函数的知识是必要的。如果这听起来像拉丁语,休息一下跳到我们终极的VBA课程了解有关此内容的更多信息。

Sub DeletEduplicaterS6()DIM R1作为长DIM N1作为LONG DIM v1作为变体暗rng1作为误差on endmacro application.screenupdating = false anation.calculation = xlcalculationmanual set rng1 = application.intersect(activeSheet.ustrange,_ activeSheet.columns(ActiveCell.Column))application.statusbar =“处理行:”&format(rng.row,“#,## 0”)n1 = 0对于r1 = rng1.rows.count到2步骤-1如果r1 mod 500 =0然后application.statusBar =“处理行:”&格式(r1,“#,## 0”)结束如果v1 = rng1.cells(r1,1).value如果v1 = vbnullstring,则if application.worksheetfunction.count(rng1.columns(1),vbnullstring)> 1然后rng1.rows(r1).entirerow.delete n 1 = n1 + 1结束如果application.worksheetfunction.countif(rng1.columns(1),v1)> 1那么rng1.rows(r1).entireerow.delete n1 = n1 + 1结束如果结束如果下一个r1 endmacro:application.statusbar = false应用程序.screenupdating = true application.calculation = xlcalculationautom msgbox“重复的行删除:”&cstr(n1)结束子

在这个程序中,我们声明R1 N1 V1和rng1为变量。计算模式设置为手动,屏幕更新状态设置为false。vbNullString常量表示一个指向字符串的空指针。它代表空字符串。如果拥有相同内容的行数多于一行,换句话说,如果我们有重复的行,那么一行将被删除。N1加1,行也加1。这个循环被执行,直到所有重复的行被删除。MsgBox()用于返回存储在变量N1中的被删除的重复行数。Cstr()将值转换为字符串。注意,在程序结束时,计算模式被设置为自动,屏幕更新状态被设置为true。

如果您知道基础知识,VBA很有趣。希望本教程给了你一个很好的背景。在任何时候,如果您想了解更多,请随意用MrExce弯曲一些VBA肌肉l,或深入到Excel VBA世界与这两部分课程(基本先进的)。

Excel VBA的顶级课程

解锁Excel VBA和Excel宏
Leila Gharani.
4.7 (26917)
畅销书
熟练掌握微软Excel宏和Excel VBA
凯尔·佩
4.5 (11,711)
畅销书
Excel宏和VBA初学者
Bluelime学习解决方案
4.3 (19)
热和新的
完整的Web自动化与Excel VBA
丹尼尔强
4.8 (739)
畅销书
Excel VBA宏:超消除歧义的Excel VBA编程
格兰特赌博
4.4 (989)
畅销书
最终Excel VBA
马克塔尔伯特
4.7 (3210)
Excel VBA编程-完整指南
Boris Paskhaver.
4.7 (3,742)
Microsoft Excel VBA简介
凯尔·佩
4.5 (1161)
Excel宏和Excel VBA编程初学者
Andreas Exadaktylos
4.5 (859)
评价最高
Excel与Microsoft Excel VBA用户表单
凯尔·佩
4.5 (1,188)

更多Excel VBA课程

Excel VBA的学生也可以学习

让你的团队。领导行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求一个演示