VBA 引用公式中使用的列范围

VBA refer to a column used range in a formula

提问人:user2297268 提问时间:10/14/2023 最后编辑:JohnMuser2297268 更新时间:10/14/2023 访问量:43

问:

我有一个数组公式,用于计算列中的唯一记录。我正在尝试在 VBA 模块中使用它,但需要弄清楚如何根据列的已用范围更改范围,因为每次运行它时它都会更改。我使用的公式是,只需要了解如何动态更改 H 列中的范围。任何帮助都是值得赞赏的。=SUM(1/COUNTIF(H2:H67,H2:H67))

我已经在网上进行了研究,但是对于如何将使用的范围隔离到单个列以及如何在我拥有的公式中引用它,我有所欠缺。

Excel VBA 工作表函数

评论

0赞 BigBen 10/14/2023
你是说 ?Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns("H"))
0赞 Tim Williams 10/14/2023
也许您可以解释一下如何在 VBA 中使用它的更多信息?H2 也会改变,还是只有 H67?

答:

1赞 Tim Williams 10/14/2023 #1

下面是使用 VBA 计算工作表公式的示例:

Sub Tester()
    
    Dim ws As Worksheet, lr As Long
    
    Set ws = ActiveSheet 'for example
    
    lr = ws.Cells(Rows.Count, "H").End(xlUp).Row 'last row in col H
    
    If lr > 1 Then 'any data?
        'evaluate the formula
        Debug.Print ws.Evaluate(Replace("=SUM(1/COUNTIF(H2:H<lr>,H2:H<lr>))", "<lr>", lr))
        
        'alternate using UNIQUE()
        Debug.Print UBound(ws.Evaluate("=UNIQUE(H2:H" & lr & ")"))
    End If
    
End Sub