使用Excel VBA宏查找范围内有数据的最后一行(7种方法)

  • Share This
Hugh West

在使用Microsoft Excel时,查找最后一行或一列是一项常见的任务。 我们使用键盘来查找最后使用的行或列。 但是,你可能会发现自己需要从一个复杂的数据集中查找最后使用的行。 在本教程中,你将通过实际例子和适当的插图,学习在Excel中使用VBA查找带有数据范围的最后一行。

下载实践工作手册

下载这本练习手册。

查找某一范围内最后使用的行.xlsm

使用Excel VBA宏查找范围内有数据的最后一行的7种方法

在接下来的章节中,我们将为你提供七种方法,这些方法将帮助你在Excel中使用VBA找到带有数据的最后一行。 我们建议你学习并应用所有这些方法来丰富你的Excel知识。

📕 阅读更多 : 在Excel中查找最后一个带值的单元格(6种方法)

为了演示这个教程,我们将使用这个数据集。

这里,我们有一个由一些球员信息组成的数据集。 我们将用它来教你所有的方法。

打开VBA编辑器

在我们开始之前,在这里我们年龄给你一个简单的提醒,在Excel中打开VBA编辑器。

首先,按 Alt+F11 然后,在键盘上选择 插入> 模块。 之后,它将打开Excel的VBA编辑器。

1.使用VBA的Range.End属性在一个范围内寻找有数据的最后一行

现在,这个方法基本上可以找到一个单元格区域的末端。 主要是最后使用的单元格区域。 我们可以用这个方法来找到一个给定范围内有数据的最后一行。 使用VBA会给你带来理想的结果。

📌 阶梯

首先,打开 VBA 编辑。

然后,输入以下代码。

 Sub range_end_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = Range("B4").End(xlDown).Row MsgBox " Last used row: " & LastRow End Sub 

现在,保存该文件,然后,按 Alt+F8 来打开宏对话框。 选择 范围_结束方法

之后,点击 "运行"。

正如你所看到的,我们已经成功地在Excel中使用VBA找到了有数据的最后一行。

2.Excel中VBA的Range.Find属性

现在,在VBA中,我们使用Range.Find方法从数据集中搜索一个特定的值。 但这个方法在寻找一个范围内有数据的最后一行时很方便。 它的工作原理类似于Excel的Find & Replace对话框。 Range.Find方法有很多参数。 但我们不会全部使用它们。

在我们使用Range.Find方法之前,让我们给你一个快速信息。

Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious)

什么 := "*" - 星号是一个通配符,可以发现单元格中的任何文本或数字。 它主要与探索非空白单元格相同。

搜索顺序:=xlByRows - 这意味着在进入下一行之前,要对每一整行进行查找。 根据SearchDirection参数,从左到右或从右到左进行查找。 这里的附加选项是xlByColumns,它在查找最后一列时被利用。

搜索方向:=xlPrevious - 这决定了探索的方向。 xlPrevious意味着它将从右到左或从下到上进行搜索。 另一个选择是xlNext,它在相反的路径上进行转移。

📌 阶梯

首先,打开VBA编辑器。

然后,输入以下代码。

 Sub range_find_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row MsgBox " Last used row: " & LastRow End Sub 

现在,保存文件,然后,按Alt+F8打开宏对话框。 选择 range_find_method。

之后,点击 运行 .

最后,它将在我们的Excel工作表中找到有数据的最后一行。

3.使用VBA的SpecialCells函数来寻找最后一行

这种方法的工作原理是按 按键+结束 当你按下键盘上的Ctrl+End时,无论你在哪里,它都会带你到最后一行。 但如果你想用Excel中的VBA代码找到最后使用过的数据行,这段代码是你必须的。

📌 阶梯

首先,打开VBA编辑器。

然后,输入以下代码。

 Sub specialcells_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Cells.SpecialCells(xlCellTypeLastCell).Row MsgBox " Last used row: " & LastRow End Sub 

现在,保存文件,然后,按Alt+F8打开宏对话框。 选择 特殊细胞的方法 .

之后,点击 运行 .

正如你所看到的,我们在Excel中使用VBA成功地找到了最后一行的数据。

4.使用UsedRange函数查找在一个范围内有数据的最后一行

VBA中的UsedRange是对工作表的占有,它返回一个代表特定工作表上使用的范围(工作表中使用或加载的所有Excel单元格)的范围对象。 它是一个属性,意思是工作表中左上角利用的单元格和右上角利用的单元格所覆盖或指定的区域。

📌 阶梯

首先,打开VBA编辑器。

然后,输入以下代码。

 Sub usedRange_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row MsgBox " Last used row: " & LastRow End Sub 

现在,保存文件,然后,按Alt+F8打开宏对话框。 选择 usedRange_method.

之后,点击 运转 .

最后,你会在Excel中成功看到工作表上最后使用的行。

5.在Excel中使用VBA的表格范围

如果你的工作表中有一个表格,你可以用这个方法找到最后一行的数据。

📌 阶梯

首先,打开VBA编辑器。

然后,输入以下代码。

 Sub TableRange_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.ListObjects("Table1").Range.Rows.Count + 3 MsgBox " Last used row: " & LastRow End Sub 

注意事项 : 这里,我们在最后一行加入3,因为我们的数据集在第3行之后开始。

现在,保存文件,然后,按Alt+F8打开宏对话框。 选择 TableRange_method.

之后,点击 运行 .

正如你所看到的,我们已经成功地使用了VBA代码中的表格范围方法来寻找Excel中最后一行的数据。

6.使用命名范围来寻找有数据的最后一行的范围

这种方法在Excel中并不常用。 但是,我们认为你应该学习这种方法来丰富你的知识。

如果你的数据集有一个命名的范围,你可以使用这段代码。 看看下面的截图。 它里面有一个命名的范围。

📌 阶梯

首先,打开VBA编辑器。

然后,输入以下代码。

 Sub nameRange_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Range("Named_Range").Rows.Count + 1 MsgBox "last used row: " & LastRow End Sub 

注意事项 : 我们在LastRow上加1,因为我们的范围是从第1行之后开始的。

现在,保存该文件,然后,按 Alt+F8 来打开宏对话框。 选择 nameRange_method.

之后,点击 "运行"。

正如你所看到的,我们成功地使用VBA找到了最后一行的数据。

7.Excel中VBA的CurrentRegion函数

你也可以使用VBA的CurrentRegion方法来寻找Excel中最后使用的行。 虽然这很棘手,但如果你想的话,你可以利用这一点为你带来好处。

📌 阶梯

首先,打开VBA编辑器。

然后,输入以下代码。

 Sub CurrentRegion_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Range("B4").CurrentRegion.Rows.Count + 3 '根据你的选择添加数字' MsgBox "最后使用的行:" & LastRow End Sub 

注意事项 :Range应该是你的数据集的第一个单元格。 然后根据你的选择添加你的行数。 这里,我们添加了3,因为我们的数据集从第3行开始。

现在,保存文件,然后,按Alt+F8打开宏对话框。 选择 当前区域_方法

之后,点击 "运行"。

正如你所看到的,我们已经成功地使用VBA代码找到了最后一行数据。

💬 需要记住的事情

Range.End只对单行或单列起作用,如果你的数据集包含很多空白单元格,就很难找到有数据的最后一行。

有时,你必须在你的方法中添加一些值,以使代码顺利运行。 我们添加了行号以找到最后一个单元格。 因此,你必须记住你的数据集从哪里开始。

总结

最后,我希望本教程为你提供了在Excel中使用VBA查找最后一行数据的有用知识。 我们建议你学习并将所有这些说明应用到你的数据集中。 下载练习工作簿并自己尝试这些。 此外,请随时在评论区提供反馈。 你的宝贵反馈使我们有动力创造这样的教程。

不要忘记查看我们的网站 独家专访 遇到各种与Excel有关的问题和解决方案。

不断学习新方法,不断成长!

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.