2015-05-07 89 views
0

我有一個函數,查找給定範圍內的值。設置過濾器時保持範圍限制。功能。 Excel

當我雖然篩選在Excel中範圍,該功能只使用過濾範圍,而不是完整的範圍。

我的代碼:

Function LastTwoYearsByRegion(category As String, region As String, quality As String, strType As String) As Long 

    Dim lastRow As Long 

    LastTwoYearsByRegion = 0 

    lastRow = Sheet8.Cells(Rows.Count, 1).End(xlUp).Row 

    'more code following here 

End Function 

它看起來好像使用過濾器時,我的lastRow變量不斷變化。我怎樣才能防止功能完全做到這一點,而是始終使用完整的範圍?

+0

要麼** A)**計算'LastRow'可變_before_濾波並把它傳遞到您的'功能()',或** B)中的'函數內**未過濾()','得到LASTROW '然後重新過濾。我認爲選項A會容易得多。 [Gary's](http://stackoverflow.com/a/30105972/2344413)答案並不差,但如果其他人將要使用工作表,則不能保證您的小標記將保留或不會保留當輸入附加數據時被覆蓋。 – FreeMan

+0

這是一個UDF並將重新計算。 –

回答

0

我騙!

我包括過濾表的底部2個行低於特定值:

enter image description here

,然後,不管什麼過濾本人申請,這個宏:

Public Function GetLastRow() 
    GetLastRow = Cells(Rows.Count, 1).End(xlUp).Row - 2 
End Function 

將得到我我需要什麼:

enter image description here

+0

唯一的缺點是,如果別人使用工作表,不知道爲什麼'xxx'是在一些隨機的電池,並刪除它在努力保持清潔紙。我很確定,如果我看到這種情況,我會這樣做...... – FreeMan

+0

你的代碼是什麼,我的不是? –

+0

問題是,兩個代碼做同樣的事情.......擁有** xxx **單元允許代碼準確地找到表中的最後一個單元,因爲** xxx **永遠不會被隱藏。 ...它超出了過濾範圍! –