代码之家  ›  专栏  ›  技术社区  ›  XOR LX

传递多个范围作为聚合的数组参数

  •  4
  • XOR LX  · 技术社区  · 6 年前

    如果有人知道是否记录了以下问题和/或根本原因,我将不胜感激。

    假设我们有,例如,从1到10的数字 A1:A10 ,以下公式

    =SUMPRODUCT(SUBTOTAL(4,OFFSET(A1,{0;5},0,5)))

    是完全有效的,相当于取每个范围的最大值之和 A1:A5 A6:A10 ,自从 OFFSET 函数,这里传递一个值数组( {0;5} )作为它的 高度 参数(5),解析为范围数组:

    {A1:A5,A6:A10}

    SUBTOTAL 生成另一个数组,该数组包含来自这些范围中的每一个的最大值,即5和10,然后用 SUMPRODUCT .

    AGGREGATE 在Excel2010中引入的,似乎是 小计 . 我的问题是,为什么在尝试以下方法时

    =SUMPRODUCT(AGGREGATE(14,,OFFSET(A1,{0;5},0,5),1))

    小计 上面给出的例子中,Excel是否显示了 试图计算一个或多个公式时资源不足

    ( 请注意,非英语版本Excel的用户可能需要在数组常量中使用不同的分隔符 {0;5} )

    这是一个相当意外的错误。显然,语法没有错,语法的传递也没有错 抵消

    类似的结果也出现在 INDIRECT 而不是 ,即。

    =SUMPRODUCT(SUBTOTAL(4,INDIRECT({"A1:A5","A6:A10"})))

    =SUMPRODUCT(AGGREGATE(14,,INDIRECT({"A1:A5","A6:A10"}),1))

    给出与上述相同的错误。

    当做

    2 回复  |  直到 6 年前
        1
  •  2
  •   MiS    6 年前

    [声誉不足,无法添加评论。]

    Mac上的Excel返回:

    Arrays containing ranges are not supported

        2
  •  1
  •   lori_m    6 年前

    聚合错误似乎是由于将范围引用数组传递给需要值数组的参数所致。错误消息具有传递统一化指针导致意外行为的症状。实际上,一些其他函数也会显示相同的错误对话框,如:

    =MEDIAN(TRANSPOSE(INDIRECT({"a1:a5","a6:a10"})))
    

    另一方面,允许将引用数组传递给AGGREGATE的第四个或更高的参数,例如:

    =SUMPRODUCT(AGGREGATE(4,,B1,INDIRECT({"a1:a5","a6:a10"})))
    

    以类似的方式,SUBTOTAL允许在第二个或更高的参数中使用引用数组,这些参数中没有一个本机采用数组。小计公式是通过将函数应用于数组中的每个范围引用来计算的,即:

       SUBTOTAL(4,INDIRECT({"a1:a5","a6:a10"}))
    ->{SUBTOTAL(4,A1:A5),SUBTOTAL(4,A6:A10)}
    

    格式化 数组 函数内定义有助于可视化公式处理:

    , [ k或参考2 ], [ ], )

    小计(函数号), 参考文献1 , [ 参考文献2 ],...)

    参考

    这将是有趣的,看看是否有任何变化,这一行为与更新的计算引擎和动态数组,目前在Office 365预览版和即将发布。。。