Excel VBA-查找包含数据的最后一列

时间:2012-08-13 00:33:46

标签: excel excel-vba vba

我找到了这种方法来查找工作表中包含行的最后一个数据:

ws.Range("A65536").End(xlUp).row

是否有类似的方法来查找工作表中包含列的最后一个数据?

感谢。

5 个答案:

答案 0 :(得分:77)

有很多方法可以做到这一点。找到最可靠的。

Dim rLastCell As Range

Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)

MsgBox ("The last used column is: " & rLastCell.Column)

如果要查找特定行中使用的最后一列,可以使用:

Dim lColumn As Long

lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column

使用使用范围(不太可靠):

Dim lColumn As Long

lColumn = ws.UsedRange.Columns.Count

如果列A中没有数据,则使用已使用的范围将无法工作。请参阅此处了解使用范围的另一个问题:

有关重置已使用范围的信息,请参阅Here

答案 1 :(得分:12)

我知道这已经过时了,但我已经在很多方面对此进行了测试,并且它还没有让我失望,除非有人能告诉我。

行号

Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

专栏信

ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)

列号

ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

答案 2 :(得分:2)

激活工作表后尝试使用代码:

Dim J as integer
J = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

如果仅使用Cells.SpecialCells(xlCellTypeLastCell).Row,则问题是除非执行“保存文件”操作,否则不会更新xlCellTypeLastCell信息。但是使用UsedRange将始终实时更新信息。

答案 3 :(得分:1)

我认为我们可以修改上面@Readify's回答中的UsedRange代码,以获取最后使用过的列,即使起始列是空白还是空白。

因此lColumn = ws.UsedRange.Columns.Count修改为

lColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1将始终提供可靠的结果

enter image description here

?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1

以上行在即时窗口中产生9

答案 4 :(得分:0)

这可能有用。基于包含数据的行选择整个列,在这种情况下,我使用的是第5行:

Dim lColumn As Long

lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)