You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:08:09