[英]MS Excel: Getting content of last cell of a column and make it update automatically
这是我的用例:
更具体地说,ws“ A”在“ C”列中包含带有修订号的历史表,并且当添加新条目时,希望ws“ Z”中的单元格能够自动反映该新值。
我正在考虑使用要在VBA中编写的公式。 所以在SO的某个地方,我发现了一些东西(最初是宏),我将其转换为函数:
Function GetLastRow(strSheet, strColum) As String
Dim MyRange As Range
Set MyRange = Worksheets(strSheet).Range(strColum & "1")
GetLastRow = Cells(65536, MyRange.Column).End(xlUp).Value
End Sub
在ws“ Z”中使用Excel 2003,我得到了具有以下公式的单元格:
=GetLastRow("A", "C")
但是我有两个问题。 尽管它成功获取了列“ C”的最后一个单元格的内容:
我可以更新单元格的唯一方法是在其上键入Enter! 8v |
我也尝试直接在公式中对工作表名称进行硬编码,但它仍会获取当前ws中的最后一个单元格。8v(
难道我做错了什么? 或者,也许我应该另辟?径?
如果您能帮助我使此用例正常工作,将不胜感激。 谢谢。
正如L42之前指出的那样,问题出在Cells(65536, MyRange.Column).End(xlUp).Value
您在65536单元格和“ MyRange”中的“ C Column”中引用了它
这是您的函数的工作版本:
Function GetLastRow(strSheet, strColum) As String
Dim MyRange As Range
GetLastRow = Worksheets(strSheet).Range(strColum & "1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp)
End Function
但说实话,我更喜欢使用此公式INDEX(A!$C:$C,COUNT(A!$C:$C))
只需要稍微调整一下范围。 使用宏有点矫kill过正,除非您在C列中有空白行,否则我不认为需要使用宏。
我发现了如何使函数自动更新(用例的第二部分):我必须添加
Application.Volatile
在功能的身体中。 所以这是我现在使用的版本:
Function GetLastRowValue(strSheet, strColum) As String
Application.Volatile
Dim MyRange As Range
GetLastRowValue = Worksheets(strSheet).Range(strColum & "1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp)
End Function
感谢所有的帮助。
Milanor已经回答了它,但是让我使用Cells显式地重写您的Function 。
Function GetLastRow(strSheet, strColum) As String
With Sheets(strSheet)
GetLastRow = .Cells(.Rows.Count, strcolum).End(xlUp).Row
End With
End Function
也可以读一读这本书 。 高温超导
我正在寻找类似的东西,这对我有用:
- 构建使用列中的值获取最后一行的函数:
Function LastRow(ws As String, rng As String)
On Error Resume Next
LastRow = Sheets(ws).Range(rng).Find(What:="*", _
After:=Sheets(ws).Range(rng).Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Value
On Error GoTo 0
End Function
- 在工作表“ Z”中输入例程,因此每次激活工作表时都会更新该功能:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFullRebuild
End Sub
- 输入工作表Z的公式y单元格= LastRow(“ A”,“ C:C”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.