Excel中Range.HasArray无法识别数组单元格,如何正确判断?
判断Excel单元格是否属于数组公式区域的正确方法
为什么HasArray返回False
单个单元格调用Range.HasArray时,只有当该单元格是数组公式区域的左上角单元格才会返回True,区域内其他单元格的这个属性都会返回False,这就是你碰到的情况。而Range.FormulaArray在非数组单元格中会返回和Formula一致的内容,没法用来判断是否属于数组公式区域。
正确判断方法
利用Range.CurrentArray属性结合错误捕获来实现:如果目标单元格属于某个数组公式区域,CurrentArray会返回整个数组的Range对象;如果不属于,调用该属性会触发错误。
以下是可用的VBA函数:
Function IsPartOfArrayFormula(rng As Range) As Boolean ' 处理多单元格区域的情况 If rng.Cells.Count > 1 Then IsPartOfArrayFormula = rng.HasArray Exit Function End If ' 捕获调用CurrentArray时的错误 On Error Resume Next Dim arrRange As Range Set arrRange = rng.CurrentArray On Error GoTo 0 ' 若arrRange不为空,说明单元格属于数组公式区域 IsPartOfArrayFormula = Not arrRange Is Nothing End Function
使用方式
- 传入单个单元格:函数返回该单元格是否属于数组公式区域。
- 传入多单元格区域:函数返回该区域是否是一个完整的数组公式区域。
内容的提问来源于stack exchange,提问作者samirjaiswal
相关产品推荐
相关产品推荐

