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

我发现这个方法用于查找包含表格中最后一行的数据:

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

有没有一种类似的方法来查找表单中最后一个包含数据的列?

谢谢。

很多方法来做到这一点。 最可靠的是find。

 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中没有数据,则使用已使用的范围将无法正常工作。有关使用范围的另一个问题,请参阅此处:

有关重置使用的范围,请参阅此处 。

我知道这已经很老了,但是我已经用了很多方法来testing它,但是除非有人能够告诉我,否则还没有让我失望。

行号

 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 

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

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

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

我想我们可以从@ Readify上面的答案修改UsedRange代码来获取最后使用的列,即使起始列是空白的。

所以这个lColumn = ws.UsedRange.Columns.Count修改为

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

在这里输入图像描述

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

上线在即时窗口收益9