使用vba excel查找最后一个单元格地址

时间:2012-07-12 14:07:51

标签: excel vba

我搜索了这个网站,看起来所有答案都只是指向找到单元格的行号。

我正在尝试设置一个范围,以便它从A1A列中的数据末尾。此电子表格将每周更新,以便每周都会添加数据。

我想知道什么代码可以工作,以便我可以找到行号并以某种方式将其与我的范围代码绑定,以便它等于"A" + lastrownumber?或者,如果有代码将列和行号一起提供?如果我错过了正确答案的链接,也会有一个简单的链接,我为帖子和你的时间道歉。

这是我的代码:

Sub NamedRange()

Dim Rng1 As Range
Dim newDate As Integer
Dim NumberOfRows As Range


Dim MyRange As Range
Dim lastRow2 As Range


lastRow2 = Range("A65536").End(xlUp).Row
'lastRow2 = LastRow

Set Rng1 = Sheets("Sheet1").Range(lastRow2)
ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1


Dim date1 As String
Dim dat As Date
Dim newPrice As Double


Set RgSales = Range("MyRange")

4 个答案:

答案 0 :(得分:8)

这将返回与A列中最后填充的单元格对应的范围对象

Range("A:A").Find("*",Range("A1"),SearchDirection:=xlprevious)

如果您需要行号,请使用以下命令:

Range("A:A").Find("*",Range("A1"),SearchDirection:=xlprevious).row

答案 1 :(得分:2)

这将给出给定列中的最后一行

= Cells(Activesheet.Rows.Count, ColumnNumber).End(xlUp).Row(根据@Gimp修正)

然后你有一个可以用来添加到数据的引用 - 例如,如果你想查看列“A”,那么这将是列号1.将其提供给函数,然后你可以使用{{1} }如果您想要Cells(NumberReturnedFromFunction,ColumnNumber)地址样式

,请添加.Address

答案 2 :(得分:0)

尝试使用以下内容:

Activesheet.Cells(Activesheet.Rows.Count, "A").End(xlUp).Row

您可以使用对工作表索引#Sheets(1)的引用或工作表名称Sheets("Sheet1")

替换Activesheet

通过使用Rows.Count,它将检查所有版本的Excel的最大行数并兼容。

最后,你可以在你的范围参考中使用它,如下所示:

Msgbox Sheets(1).Range("A" & Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).row).value

但我可能会把它重写为

With Sheets(1)
    Msgbox .Range("A" & .Cells(.Rows.Count, "A").End(xlUp).row).value
End With

答案 3 :(得分:0)

如果数据中存在空白,我会避免使用xlDown,因此下面的内容很好。在即时窗口中尝试:

Activesheet.range("A1:A" & Activesheet.Cells(Excel.Rows.Count, 1).End(Excel.xlUp).Row).select