我正在使用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个元素的数组或启用宏的工作簿。
答案 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>。