如何从定义的范围中查找最后一个单元格的位置?单元格不必包含任何数据,但必须是最正确的,并且大多数位于特定范围内的单元格中。
Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion
我希望收到
Cells(i,j)
答案 0 :(得分:1)
也许你在此之后:
'absolute indexes from cell A1
With rngOrigin
i = .Rows(.Rows.count).row
j = .Columns(.Columns.count).Column
End With
'relative indexes from rngOrigin upleftmost cell
With rngOrigin
i = .Rows(.Rows.count).row - .Rows(1).row + 1
j = .Columns(.Columns.count).Column - .Columns(1).Column + 1
End With
答案 1 :(得分:0)
尝试以下
rngOrigin.End(xlDown).End(xlRight)
或者您可以使用CurrentRegion
并计算行数和列数并使用Offset
答案 2 :(得分:0)
在您的情况下,由于您希望在wksOrigin
(定义为工作表)中找到最右侧和最下方的单元格,您可以使用SpecialCells(xlCellTypeLastCell)
获取最后一个单元格Row and Column
i = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Row ' <-- get last row number
j = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Column ' <-- get last column number
如果要调试结果,可以添加:
MsgBox "Last row at " & i & ", last column at " & j
答案 3 :(得分:0)
我在下面的代码中处理了它,但你的评论很有帮助。谢谢。
intLastRow = rngOrigin.Cells(1, 1).Row + rngOrigin.Rows.Count - 1
intLastCol = rngOrigin.Cells(1, 1).Column + rngOrigin.Columns.Count - 1
答案 4 :(得分:0)
其他人给出的答案大多有效,但如果该区域是不连续单元的并集则无效。这是一个可以在单个和多个区域(连续和不连续)区域中一致使用的版本。
Function LastCellOfRange(rng As Excel.Range) As Excel.Range
Dim area As Excel.Range
Dim rowNum As Long
Dim maxRow As Long
Dim colNum As Long
Dim maxCol As Long
Dim areaIdx As Integer
Set LastCellOfRange = Nothing
maxRow = 0
maxCol = 0
For areaIdx = 1 To rng.Areas.Count
Set area = rng.Areas(areaIdx)
rowNum = area.Cells(area.Cells.Count).row
If (rowNum > maxRow) Then
maxRow = rowNum
End If
colNum = area.Cells(area.Cells.Count).Column
If (colNum > maxCol) Then
maxCol = colNum
End If
Next areaIdx
Set LastCellOfRange = rng.Worksheet.Cells(maxRow, maxCol)
Set area = Nothing
End Function
答案 5 :(得分:0)
也许这就是您想要的:
Server
答案 6 :(得分:0)
使用此代码查找给定范围内的最后一个单元格
Sub GetLastCellFromRange()
Dim rng As Range
Set rng = Range("$C$10:$E$20")
'Set rng = Range(Selection.Address) ' Use this line to select the range in worksheet
MsgBox "Last Cell of given range is : " & rng.Cells(rng.Rows.Count, rng.Columns.Count).Address
End Sub
我希望它将对您有帮助
答案 7 :(得分:-1)
如果你想要一个定义范围的绝对最后一个单元格,无论它是否有任何内容,这里都是一个简单的解决方案
Dim InputRng As Range 'define a range for the test'
Set InputRng = Range("$F$3:$F$15")
MsgBox InputRng(1).Address & ":" & InputRng(InputRng.Cells.Count).Address 'This would output the absolute address of defined range'