3最好的方式找到最后一个非空行和柱,使用VBA
|对于使用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中的最后一行。
如何运作?
就像转到工作表的最后一行,然后按CTRL + UP快捷键一样。
Cells(Rows.Count,1):这部分选择A列中的单元格。Rows.Count给出1048576,通常是excel工作表的最后一行。
Cells(1048576, 1)
此命令一起选择带有数据的最后一行。
Cells(Rows.Count, 1).End(xlUp)
选择最后一个单元格
中的数据如果要选择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
如何运作?
好吧,机制与在列中查找包含数据的最后一个单元格相同。
我们只使用了与列相关的关键字。
使用VBA在Excel中选择数据集
现在我们知道了如何使用VBA获得excel的最后一行和最后一列。
使用它,我们可以轻松地选择一个表或数据集。选择数据集或表后,我们可以对它们进行几项操作,例如复制粘贴,格式化,删除等。
这里我们有数据集。该数据可以向下扩展。只有起始单元格是固定的,即B4。最后一行和最后一行是固定的。我们需要使用vba动态选择整个表。
VBA代码选择带有空白单元格的表
运行此命令时,整个表将在几分之一秒内被选中。您可以添加新的行和列。它将始终选择整个数据。
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
此方法的好处:
。这简单。我们实际上只写了一行就可以得到最后一行数据。
这很容易。
。快速。更少的代码行,更少的时间。
。容易理解。
。如果您的数据表具有固定的起点,则效果很好。
Range.End方法的缺点:
。必须知道起点。
。您只能获得已知行或列中的最后一个非空白单元格。当您的起点不固定时,它将毫无用处。这不太可能发生。
2.使用Find()函数查找最后一行
我们先来看一下代码。
如您所见,该代码准确地返回了最后一行。
Sub last_row() lastRow = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row Debug.Print lastRow End Sub
如何运作?
在这里,我们使用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
工作原理?
这与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关闭警告消息]