|对于使用VBA的excel中的任何自动化,查找最后使用的行和列都是基本和重要的任务之一。为了自动编译工作表,工作簿和安排数据,您需要在工作表上查找数据限制。

本文将解释以最简单的方式在excel中查找最后一行和最后一列的每种方法。

1.使用Range.End

查找列中的最后一个非空白行。我们先来看一下代码。我会解释的信。

Sub getLastUsedRow()

Dim last_row As Integer

last_row = Cells(Rows.Count, 1).End(xlUp).Row ‘This line gets the last row

Debug.Print last_row

End Sub

上面的子项查找列1中的最后一行。

image

如何运作?

就像转到工作表的最后一行,然后按CTRL + UP快捷键一样。

Cells(Rows.Count,1):这部分选择A列中的单元格。Rows.Count给出1048576,通常是excel工作表的最后一行。

Cells(1048576, 1)
End(xlUp):End是范围类的一种方法,用于在工作表中导航至末尾。 xlUp是指示方向的变量。

此命令一起选择带有数据的最后一行。

Cells(Rows.Count, 1).End(xlUp)

选择最后一个单元格

Row:row返回所选单元格的行号。因此,我们在A列中获得了具有数据的最后一个单元格的行号。在示例中,它是8。看看找到带有数据的最后一行是多么容易。此方法将选择数据中的最后一行,而不管之前的空白单元格如何。您可以在图像中看到只有单元格A8有数据。除A4以外,所有前面的单元格均为空白。

中的数据如果要选择A列中的最后一个单元格,则只需从末尾删除“ .row”并输入.select。

“ .Select”命令选择活动单元格。

Sub getLastUsedRow()

Cells(Rows.Count, 1).End(xlUp).Select ‘This line selects the last cell in a column

End Sub

获取最后一个单元格的地址列

如果要在A列中获取最后一个单元格的地址,则只需从末尾删除“ .row”并写入.address。

Range.Address *函数返回活动单元的地址。

Sub getLastUsedRow()

add=Cells(Rows.Count, 1).End(xlUp).address ‘This line selects the last cell in a column

Debug.print add

End Sub

查找行中的最后一个非空白列

这几乎与在列中查找最后一个非空白单元格相同。在这里,我们获取第4行中数据最后一个单元格的列号。

您可以在图像中看到它正在返回第4行中最后一个非空白单元格的列号,即4。

Sub getLastUsedCol()

Dim last_col As Integer

last_col = Cells(4,Columns.Count).End(xlToLeft).Column ‘This line gets the last column

Debug.Print last_col

End Sub

image

如何运作?

好吧,机制与在列中查找包含数据的最后一个单元格相同。

我们只使用了与列相关的关键字。

使用VBA在Excel中选择数据集

现在我们知道了如何使用VBA获得excel的最后一行和最后一列。

使用它,我们可以轻松地选择一个表或数据集。选择数据集或表后,我们可以对它们进行几项操作,例如复制粘贴,格式化,删除等。

这里我们有数据集。该数据可以向下扩展。只有起始单元格是固定的,即B4。最后一行和最后一行是固定的。我们需要使用vba动态选择整个表。

VBA代码选择带有空白单元格的表

运行此命令时,整个表将在几分之一秒内被选中。您可以添加新的行和列。它将始终选择整个数据。

image

Sub select_table()

Dim last_row, last_col As Long

'Get last row

last_row = Cells(Rows.Count, 2).End(xlUp).Row

'Get last column

last_col = Cells(4, Columns.Count).End(xlToLeft).Column

'Select entire table

Range(Cells(4, 2), Cells(last_row, last_col)).Select

End Sub

此方法的好处:

image

。这简单。我们实际上只写了一行就可以得到最后一行数据。

这很容易。

。快速。更少的代码行,更少的时间。

。容易理解。

。如果您的数据表具有固定的起点,则效果很好。

Range.End方法的缺点:

。必须知道起点。

。您只能获得已知行或列中的最后一个非空白单元格。当您的起点不固定时,它将毫无用处。这不太可能发生。

2.使用Find()函数查找最后一行

我们先来看一下代码。

如您所见,该代码准确地返回了最后一行。

Sub last_row()

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



Debug.Print lastRow

End Sub

image

如何运作?

在这里,我们使用find函数使用通配符“ *”查找包含任何内容的任何单元格。星号用于查找任何内容,文本或数字。

使用Find函数获取最后一个包含数据的单元格的好处:

We set search order by rows (searchorder:=xlByRows). We also tell excel vba the direction of search as xlPrevious (searchdirection:=xlPrevious). It makes find function to search from end of the sheet, row wise.

Once it find a cell that contains anything, it stops. We use the Range.Row method to fetch last row from active cell.

。您不需要知道起点。它只是让您排在最后。 。它可以是通用的,可用于在没有任何更改的情况下查找包含任何工作表中的数据的最后一个单元格。

。可用于查找工作表上特定文本或数字的任何最后一个实例。

Find()函数的缺点:

。这很丑。争论太多。

。太慢了

。无法用于获取最后一个非空白列。从技术上讲,您可以。但这太慢了。

3.使用SpecialCells函数获取最后一行

带xlCellTypeLastCell参数的SpecialCells函数返回最后使用的单元格。让我们先看看代码

如果运行上面的代码,您将获得上次使用的单元格的行号。

Sub spl_last_row_()

lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Debug.Print lastRow

End Sub

image

工作原理?

这与Excel中的快捷键CTRL + End等效。选择最后使用的单元格。如果在按CTRL + End的同时记录宏,则将获得此代码。

我们只是用它来获取上次使用的单元格的行号。

注意:*如上所述,此方法将返回最后使用的单元格,而不是最后一个包含数据的单元格。如果删除最后一个单元格中的数据,则上面的vba代码仍将返回相同的单元格引用,因为它是“最后使用的单元格”。您需要先保存文档才能使用此方法获取包含数据的最后一个单元格。

Sub Macro1()

'

' Macro1 Macro

'

'

ActiveCell.SpecialCells(xlLastCell).Select

End Sub

相关文章:

链接:/ files-workbook-and-worksheets-in-vba-delete-sheets-without-confirmation-prompts-using-vba-in-microsoft-excel [在Microsoft Excel中使用VBA删除没有确认提示的工作表] |||链接:/在VBA中添加文件/工作簿和工作表,并在Microsoft Excel中使用VBA添加和保存新工作簿[在Microsoft Excel 2016中使用VBA添加和保存新工作簿] ||||链接:/ menus-toolbars-status-bar-in-vba-display-message-on-the-statusbar-message-on-the-statusbar-using-vba-in-microsoft-excel [在Excel VBA状态栏上显示消息] |||| link:/ general-topics-in-vba-off-warning-messages-using-vba-in-microsoft-excel [在Microsoft Excel 2016中使用VBA关闭警告消息]

热门文章:

link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]