如何从定义的范围中查找最后一个单元格的位置?单元格不必包含任何数据,但必须是来自某个范围的最右边和最下方的单元格。从范围VBA中查找最后一个单元格
Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion
我希望收到
Cells(i,j)
如何从定义的范围中查找最后一个单元格的位置?单元格不必包含任何数据,但必须是来自某个范围的最右边和最下方的单元格。从范围VBA中查找最后一个单元格
Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion
我希望收到
Cells(i,j)
尝试以下
rngOrigin.End(xlDown).End(xlRight)
,或者您可以使用CurrentRegion
和计数的行和列,并使用Offset
你的情况,因为你想在012中找到最右边和最下面的单元格(定义为工作表),您可以使用SpecialCells(xlCellTypeLastCell)
来获取最后一个单元行和列。
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
我想找到当前区域的Range的最后一个单元格,而不是整个Worksheet。如果工作表包含超出当前区域的数据,我不想包含它们。 – Fajka
你定义的范围是什么? –
也许你是在此之后:
'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
我处理它在下面的代码,但你的言论很有帮助。谢谢。
intLastRow = rngOrigin.Cells(1, 1).Row + rngOrigin.Rows.Count - 1
intLastCol = rngOrigin.Cells(1, 1).Column + rngOrigin.Columns.Count - 1
那么你应该采用我的“绝对”代码,并避免重复'rngOrigin'并使用(对我来说)更适当的范围规格 – user3598756
如果你想有一个定义范围的绝对值最后一个单元格,不管它是否有任何内容,这里有一个简单的解决方案
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'
虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/18793890) – Dez
@Dez:谢谢你的提示,我会在有空的时候这样做。 –
@我已经回复了德兹,当我有时间时,我会做。我正在使用执行类似功能的Excel中的UDF,并且先检查了堆栈,但找不到任何有用的答案。最终我从我的答案中链接了另一个网站的解决方案。我已经测试过它,它工作得很好。 –
这可能为一个简单的情况下工作http://www.cpearson.com/excel/cells.htm与设置myrange =范围(“A1:A10”),并使用该链接重新索引一个范围的情况下,并使用myrange.Rows.Count – barlop