如何在VBA中为统计唯一值的数组公式动态引用列已用区域?
在VBA中动态引用H列已用区域实现唯一值统计数组公式
要实现动态引用H列已用区域并设置数组公式,你可以按以下逻辑编写VBA代码:
定位H列最后一行:
使用Cells(Rows.Count, "H").End(xlUp).Row获取H列最后一个非空单元格的行号,这个方法仅针对H列生效,不受工作表其他区域数据干扰。拼接动态范围字符串:
将H2到最后一行的范围拼接成字符串,格式为"H2:H" & lastRow。设置数组公式:
通过单元格的FormulaArray属性写入数组公式,普通Formula属性无法识别数组公式语法。
完整VBA代码示例:
Sub CalculateUniqueCount() Dim lastRow As Long Dim dynamicRange As String ' 获取H列最后一个非空单元格的行号 lastRow = Cells(Rows.Count, "H").End(xlUp).Row ' 拼接动态范围 dynamicRange = "H2:H" & lastRow ' 将数组公式写入目标单元格(示例写入I1,可按需修改) Range("I1").FormulaArray = "=SUM(1/COUNTIF(" & dynamicRange & "," & dynamicRange & "))" End Sub
额外说明
- 如果H列存在空白单元格,原公式会将空白视为一个唯一值统计。若要排除空白,可修改公式为:
Range("I1").FormulaArray = "=SUM(IF(" & dynamicRange & "<>"""",1/COUNTIF(" & dynamicRange & "," & dynamicRange & "),0))" - 确保目标单元格未被保护,否则无法写入公式。
内容的提问来源于stack exchange,提问作者user2297268
相关产品推荐
相关产品推荐

