我有一個數據集,我正在使用過濾器。我只是想計算N列中可見的總值。數據從第2行開始,到第2047行結束。SpecialCells(xlCellTypeVisible)也包含隱藏/過濾的單元格
我看到了this thread,但它給了我同樣類型的問題。
這裏是我的功能:
Function sumVisible() As String
Dim rng As Range
Set rng = Range("N2:N2047").SpecialCells(xlCellTypeVisible)
' Debug.Print "Range: " & rng.Address & ", Sum: " & WorksheetFunction.Sum(rng)
sumVisible = Format(WorksheetFunction.Sum(rng), "$#,###.##")
End Function
從我目前的過濾器,我的標題行(1)是可見的,因爲是行901至937.所以,我想總結N901:N937。
但是,rng
始終設置爲$N$2:$N$2047
。我預計它是$N$901:$N$937
。
使用的是給我聯繫上述線程的功能,我得到了一系列的$N$2:$N$937
...所以最起碼,我得到正確的年底行,但不是起始行。
但是!如果我在立即窗口中鍵入Range("N2:N2047").SpecialCells(xlCellTypeVisible).Select
,在宏的外面,它正確地選擇可見單元格。還有一步,?Range("N2:N2047").SpecialCells(xlCellTypeVisible).address
正確返回$N$901:$N$937
。
什麼可能會出錯?
編輯:我剛剛發現做=SUBTOTAL(9,N1:N2047)
只會求和可見的單元格,所以我正在使用它。但我的問題仍然存在 - 爲什麼不是SpecialCells(xlCellTypeVisible)
在宏中正常工作?
功能正常工作對我來說。你如何隱藏你不想包含的行? (也許有一些有趣的事情正在進行,這意味着Excel不會認爲'.Hidden'是'True'。) – YowE3K
@ YowE3K - 我只是簡單地使用過濾器。我有列中的數據,而且我正在根據列過濾出數據。我將行'2'過濾出來,並在立即窗口中執行'?行(2)。隱藏',正確返回'真'。我沒有任何'Worksheet_Change'類型的事件,唯一的宏是我問的那個。 – BruceWayne
我嘗試手動隱藏行,並使用過濾器來隱藏行。這兩種方法似乎都按預期工作。 – YowE3K