2015-07-21 182 views
1

我正在嘗試構建一個簡單的函數,該函數有1個單元格輸入,基於這個函數,它將抵消本卷中最後一個連續填充的單元格。在Excel中使用VBA查找最後一行的函數

Option Explicit 
Function LastCell(CellA As String) 

    LastCell = Range(CellA).End(xlDown).Value 

End Function 

出於某種原因,實在不行......

沒有VBA,我通過實現所期望的結果:=LOOKUP(9E+50,B:B)例如。

不是非常優雅,並不總是有用的。

+0

你是怎麼調用這個函數的?你在LastCell內傳遞什麼? – rwilson

+0

比方說,我在「A1:A400」中有一列填滿了日期。我希望能夠通過輸入單元格'A1'中的值來獲取單元格'A400'中的值,因此我的公式應該如下所示:'LastCell(A1)'應該等於單元格'A400'中的值 – Newskooler

+0

You將需要在A1附近引用引號。所以它應該是LastCell(「A1」)。 – rwilson

回答

1

試試這個代碼

Option Explicit 
Function LastCell(CellA As range) 
    LastCell = CellA.End(xlDown).Value 
End Function 

使用它作爲= LastCell(B1)

注意,此方法不起作用以及隱藏或過濾行或合併的單元格。

+0

謝謝,這就是我一直在尋找的! – Newskooler

1

您的查找與數字相符,但如果該列僅包含文本或者如果混合文本和數字包含錯誤答案,則會返回#N/A。一個更確定的公式可能是,

=max(iferror(match(1e99, B:B), 0), iferror(match("žžž", B:B), 0)) 

這將識別與最後一個數字,日期或文本值的行。錯誤被忽略。

+0

感謝您輸入Jeepad,但是我正在尋找VBA解決方案,因爲我希望在添加基本功能後添加一些過濾器。 – Newskooler

+0

@jeeped哇,驚人的公式!你能強調一下嗎? –

0

當調用該函數嘗試:

MsgBox LastCell(ActiveCell.Address) 

在你給的例子,你需要調用的函數是這樣的:

LastCell("A1") 
0

這將工作,從下往上來,而不是自頂向下:

LastCell = cells(rows.count,CellA.column).End(xlUp).Value 

這將返回最後一個單元格的值(類似於您的代碼),如果您想要地址然後改變.Value到.Address。

編輯:另外從字符串改變塞拉的朦朧到範圍

+0

這看起來像你明白我在做什麼,但它給了我一個編譯錯誤:無效的限定詞 – Newskooler

+0

這只是你調用它的方式。 – rwilson

+0

在工作表中輸入= LastCell(「A1」)或在VBA代碼中使用MsgBox LastCell(Range(「A1」)) –

相關問題