如何使用Excel VBA获取包含特定范围内数据的最后一个单元格,例如A列和B列Range("A:B")
?
答案 0 :(得分:8)
使用下面的Find
非常有用
Nothing
标识空白范围SpecialCells
范围)将"YourSheet"
更改为您要搜索的工作表的名称
Sub Method2()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("YourSheet")
Set rng1 = ws.Columns("A:B").Find("*", ws.[a1], xlValues, , xlByRows, xlPrevious)
If Not rng1 Is Nothing Then
MsgBox "last cell is " & rng1.Address(0, 0)
Else
MsgBox ws.Name & " columns A:B are empty", vbCritical
End If
End Sub
答案 1 :(得分:6)
您可以尝试以下几种方式:
Dim WS As Worksheet
Dim LastCellA As Range, LastCellB As Range
Dim LastCellRowNumber As Long
Set WS = Worksheets("Sheet1")
With WS
Set LastCellA = .Cells(.Rows.Count, "A").End(xlUp)
Set LastCellB = .Cells(.Rows.Count, "B").End(xlUp)
LastCellRowNumber = Application.WorksheetFunction.Max(LastCellA.Row, LastCellB.Row)
End With
Dim WS As Worksheet
Dim LastCell As Range
Set LastCell = Range("A:B").SpecialCells(xlCellTypeLastCell)
后者有时可能很棘手,可能无法按照您的意愿运作。
答案 2 :(得分:0)
对于变量选择,您可以使用
Sub test()
Dim arrArray As Variant
Dim iAct As Integer
Dim iHighest As Integer
arrArray = Split(Selection.Address(1, 1, xlR1C1), ":")
For Count = Right(arrArray(0), 1) To Right(arrArray(1), 1)
iAct = ActiveSheet.Cells(Rows.Count, Count).End(xlUp).Row
If iAct > iHighest Then iHighest = iAct
Next Count
MsgBox iHighest
End Sub