在excel的数组公式中使用and()公式和if语句

har*_*ryg 6 worksheet-function microsoft-excel microsoft-excel-2010

好的,所以我在电子表格中列出了客户退货清单。每个客户还具有分配给 (riskysafe)的风险类别以及分配给他们 (P1P2)的合作伙伴。

这是布局的一个例子

  A           B          C            D
Client  |  Return  |  RiskCat  |  Partner
_________________________________________
John       1.5%       risky       P2
Bill       1.8%       risky       P1
Tim        1.2%       safe        P2
Bob        1.4%       risky       P1
Kate       2.1%       risky       P2
Fred       0.8%       safe        P1
...etc
Run Code Online (Sandbox Code Playgroud)

我写了一个“ medianif()”函数,它计算给定标准(例如风险类别)中的回报中位数,例如,如果我想找到风险类别中的回报中位数,我会这样做:

=median(if(C:C="risky",B:B,""))
Run Code Online (Sandbox Code Playgroud)

然后按 ctrl-shift-enter 将其作为数组公式输入到单元格中。

同样,为了找到那些以 P1 作为合作伙伴的人的回报中位数,我会这样做:

=median(if(D:D="P1",B:B,""))
Run Code Online (Sandbox Code Playgroud)

上面的两个公式都对我有用,但说我想找到风险类别和 P1 合作伙伴的回报中位数。好吧,我尝试:

=median(if(and(C:C="risky",D:D="P1"),B:B,""))
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,我收到了 #value 错误。是否可以以这种方式使用 AND() ,如果不能,我将如何实现我所追求的目标?

bar*_*ini 5

不,您不能以这种方式使用 AND 或 OR,因为这些函数返回单个结果而不是数组。您需要使用 * 而不是 AND.... 或多个 IF,例如

=MEDIAN(IF((C:C="risky")*(D:D="P1"),B:B))

或者

=MEDIAN(IF(C:C="risky",IF(D:D="P1",B:B)))

后者可能稍微更有效