【发布时间】:2018-10-20 12:32:00
【问题描述】:
我正在使用 MEDIAN 函数来计算两个日期范围的重叠。 公式看起来像这样
=MEDIAN(A18,C18+1,$C$8+1)-MEDIAN(A18,C18+1,$B$8)
A18 & C18 是日期范围 1
B8 & C8 是日期范围 2
我想把它变成一个类似这样的数组公式来对多行的结果求和
{=SUM(MEDIAN(A18:A24,C18:C24+1,$C$8+1)-MEDIAN(A18:24,C18:24+1,$B$8))}
这仅在 MEDIAN 单独应用于数组 A18:A24 和 C18:C24 中的每个元素时才有效。
目前,Excel 连接每个 MEDIAN 调用中包含的数组并返回整体中位数,只留下一个值供 SUM 求和。这就是我需要做的“错误”结果。
有没有办法强制 excel 将 MEDIAN 应用于我的数组中的每个元素?即有没有办法强制excel从MEDIAN函数返回一个数组。
如果可能的话,它可以让我避免使用 120,000 个元素的数组或启用宏的工作簿。
【问题讨论】:
-
您可以插入另一列并在其中添加您的公式 =MEDIAN(A18,C18+1,$C$8+1)-MEDIAN(A18,C18+1,$B$8) 然后应用此列的总和
-
不,很遗憾,您不能强制
MEDIAN返回一个值数组。理论上应该可以将AGGREGATE与16和0.5的function_num和k参数一起使用,尽管它似乎不接受必要的构造(使用INDIRECT或OFFSET) 将多个范围作为其array参数传递。如果您愿意,我可以为您提供一个单细胞数组公式解决方案,尽管它必然是复杂的并且可能会占用大量资源。因此,除非您强烈反对 @usmanhaq 提出的解决方案,否则我建议您采用这种方法。 -
是的,反对意见是在我的情况下,列方法导致了 120,000 个单元格数组,这将文件大小推高到足以令人讨厌的程度。 B8 和 C8 沿另一个维度变化。 (我工作表中的单元格引用与此处不同)
-
事后看来应该使用更有意义的引用(我只是从工作表的不同部分提取公式,我也使用它)。在 C8 和 B8 固定的地方,使用列绝对有意义。
-
那么在您的实际设置中,正在处理的范围有多大?比这里给出的更大(第 18 到 24 行),我想?如果它们不是太大,那么在不使用额外的辅助列的情况下,可能仍然值得考虑使用单细胞解决方案。
标签: excel excel-formula array-formulas