[英]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.