小编CLR*_*CLR的帖子

SpecialCells(xlCellTypeVisible)在UDF中不起作用

基于@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)

excel vba excel-vba

6
推荐指数
1
解决办法
347
查看次数

标签 统计

excel ×1

excel-vba ×1

vba ×1