基于@Chips Ahoy提出的问题,我决定创建一个UDF来查找范围内可见单元格的PercentRank.
虽然@Chips似乎对我的语法修正感到满意,但实际上我无法使我的UDF正常工作.
当我运行以下时,两个地址输出读取相同.在我使用公式的示例中,尽管第3行到第11行被自动过滤器隐藏,但=VisiblePercentRank($A$2:$A$41,0.5)
两个地址输出到立即窗口读取$A$2:$A$41
.
码:
Function VisiblePercentRank(x As Range, RankVal As Double)
Debug.Print x.Address, x.Rows.SpecialCells(xlCellTypeVisible).Address
VisiblePercentRank = WorksheetFunction.PercentRank(x.Rows.SpecialCells(xlCellTypeVisible), RankVal)
End Function
Run Code Online (Sandbox Code Playgroud)
还尝试删除.Rows
:
Function VisiblePercentRank(x As Range, RankVal As Double)
Debug.Print x.Address, x.SpecialCells(xlCellTypeVisible).Address
VisiblePercentRank = WorksheetFunction.PercentRank(x.SpecialCells(xlCellTypeVisible), RankVal)
End Function
Run Code Online (Sandbox Code Playgroud)
如果没有读取第二个输出$A$2,$A$12:$A$41
或我错过了什么?
使用Excel/Office 2013,64位Win7,64位.
大脑煎炸更新
我发现如果我从即时窗口运行它,我的UDF会起作用:
?VisiblePercentRank(range("A2:A41"),0.5)
$A$2:$A$41 $A$2:$A$11,$A$39:$A$41
0.207
Run Code Online (Sandbox Code Playgroud)
但如果从内嵌式公式中运行=VisiblePercentRank(A2:A41,0.5)
:
$A$2:$A$41 $A$2:$A$41
Run Code Online (Sandbox Code Playgroud)