将 MEDIAN 等函数应用于数组公式中的各个元素 - Excel
Apply functions like MEDIAN to individual elements in an array formula - Excel
我正在使用 MEDIAN 函数来计算两个日期范围的重叠。
公式看起来像这样
=MEDIAN(A18,C18+1,$C+1)-MEDIAN(A18,C18+1,$B)
A18
& C18
是日期范围 1
B8
& C8
是日期范围 2
我想把它变成一个类似于此的数组公式来对多行的结果求和
{=SUM(MEDIAN(A18:A24,C18:C24+1,$C+1)-MEDIAN(A18:24,C18:24+1,$B))}
这仅在将 MEDIAN 分别应用于数组 A18:A24
& C18:C24
中的每个元素时有效。
目前,Excel 连接每个 MEDIAN 调用中包含的数组和 return 整体中位数,只留下一个值供 SUM 求和。这就是我需要做的 'wrong' 结果。
有没有办法强制 excel 对数组中的每个元素应用 MEDIAN?即有没有办法从 MEDIAN 函数强制 excel 到 return 数组。
如果可能的话,我可以避免使用 120,000 个元素的数组或启用宏的工作簿。
很酷的MEDIAN
公式。但是你不能像你希望的那样在数组公式中使用 MEDIAN
,因为 MEDIAN
总是 return 是一个 单个 结果(不是数组)。
我有办法解决你的问题,但有点sluggish/respetitive:
(我在公式右边添加了注释来解释发生了什么)
= 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
这个return是日期范围重叠的数组,除了这些结果可能会return 负数(如果不发生重叠),但在这种情况下你想要 return 0
.
您可以使用另一个 IF
语句来解决这个问题。
= IF(formula < 0, 0, formula)
其中 formula
是我上面的第一个公式。
旁注:通常在这种情况下,您可以避免输入 formula
两次,如下所示:
= MAX(formula,0)
除非 formula
本身 return 是一个数组,因为 MAX
只有 return 是一个结果。这与您最初遇到的 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+回车 而不是 输入 .
我正在使用 MEDIAN 函数来计算两个日期范围的重叠。 公式看起来像这样
=MEDIAN(A18,C18+1,$C+1)-MEDIAN(A18,C18+1,$B)
A18
& C18
是日期范围 1
B8
& C8
是日期范围 2
我想把它变成一个类似于此的数组公式来对多行的结果求和
{=SUM(MEDIAN(A18:A24,C18:C24+1,$C+1)-MEDIAN(A18:24,C18:24+1,$B))}
这仅在将 MEDIAN 分别应用于数组 A18:A24
& C18:C24
中的每个元素时有效。
目前,Excel 连接每个 MEDIAN 调用中包含的数组和 return 整体中位数,只留下一个值供 SUM 求和。这就是我需要做的 'wrong' 结果。
有没有办法强制 excel 对数组中的每个元素应用 MEDIAN?即有没有办法从 MEDIAN 函数强制 excel 到 return 数组。
如果可能的话,我可以避免使用 120,000 个元素的数组或启用宏的工作簿。
很酷的MEDIAN
公式。但是你不能像你希望的那样在数组公式中使用 MEDIAN
,因为 MEDIAN
总是 return 是一个 单个 结果(不是数组)。
我有办法解决你的问题,但有点sluggish/respetitive:
(我在公式右边添加了注释来解释发生了什么)
= 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
这个return是日期范围重叠的数组,除了这些结果可能会return 负数(如果不发生重叠),但在这种情况下你想要 return 0
.
您可以使用另一个 IF
语句来解决这个问题。
= IF(formula < 0, 0, formula)
其中 formula
是我上面的第一个公式。
旁注:通常在这种情况下,您可以避免输入 formula
两次,如下所示:
= MAX(formula,0)
除非 formula
本身 return 是一个数组,因为 MAX
只有 return 是一个结果。这与您最初遇到的 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+回车 而不是 输入 .