将像MEDIAN这样的函数应用于数组公式中的各个元素-Excel

时间:2018-10-20 12:32:00

标签: excel excel-formula array-formulas

我正在使用MEDIAN函数来计算两个日期范围的重叠。 公式看起来像这样

=MEDIAN(A18,C18+1,$C$8+1)-MEDIAN(A18,C18+1,$B$8)

A18C18是日期范围1

B8C8是日期范围2

我想将其转换为类似于此的数组公式以求和多行结果

{=SUM(MEDIAN(A18:A24,C18:C24+1,$C$8+1)-MEDIAN(A18:24,C18:24+1,$B$8))}

仅当MEDIAN分别应用于数组A18:A24C18:C24中的每个元素时,此方法才有效。

当前,Excel将每个MEDIAN调用中包含的数组连接起来,并返回总体中位数,仅留下一个值供SUM求和。那就是我需要做的“错误”结果。

有没有一种方法可以迫使excel将MEDIAN应用于数组中的每个元素?即有一种方法可以迫使excel从MEDIAN函数返回一个数组。

如果可能的话,我可以避免使用120,000个元素的数组或启用宏的工作簿。

1 个答案:

答案 0 :(得分:0)

MEDIAN公式。但是您不能根据需要将MEDIAN用于数组公式,因为MEDIAN总是返回单个结果(而不是数组)。

对于您的问题,我有解决方案,但是有点迟钝/重复:

(我在公式右侧添加了注释,以解释发生了什么情况)

= IF(C18:C24>C8,     // (For each cell in C18:C24) If the value is greater than C8
     C8,             // Then C8 is the upper bound
     C18:C24)        // Else, the specific value from C18:C24 is the upper bound
  -                  // (minus sign)
  IF(A18:A24<B8,     // (For each cell in A18:A24) If the value is less than B8
     B8,             // Then B8 is the lower bound
     A18:A24)        // Else, the specific value from A18:A24 is the lower bound

这将返回日期范围重叠的数组 除外,这些结果可能会返回负数(如果不发生重叠),但在这种情况下,您想返回0

您可以使用另一个IF语句来解决这个问题。

= IF(formula < 0, 0, formula)

formula是我上面的第一个公式。

旁注:通常在这种情况下,您可以避免两次输入formula,如下所示:

= MAX(formula,0)

除非formula仅返回单个结果,否则MAX本身返回数组时将不起作用。首先,您在MEDIAN时遇到过类似的问题。

总而言之,不加注释,这是对值求和的公式:

= SUM(IF((IF(C18:C24>C8,C8,C18:C24)-IF(A18:A24<B8,B8,A18:A24))<0,0,
          IF(C18:C24>C8,C8,C18:C24)-IF(A18:A24<B8,B8,A18:A24)))

当然,这是一个数组公式,必须使用 Ctrl + Shift + Enter 输入,而不仅仅是 Enter < / kbd>。