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

Nea*_*ine 46 excel vba excel-vba

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

ws.Range("A65536").End(xlUp).row
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Rea*_*idy 85

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

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)
Run Code Online (Sandbox Code Playgroud)

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

Dim lColumn As Long

lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
Run Code Online (Sandbox Code Playgroud)

使用范围(不太可靠):

Dim lColumn As Long

lColumn = ws.UsedRange.Columns.Count
Run Code Online (Sandbox Code Playgroud)

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

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


xn1*_*xn1 13

我知道这是旧的,但我已经在很多方面对它进行了测试,它还没有让我失望,除非有人能告诉我.

行号

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

专栏信

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

列号

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