在Excel中,我有两列。一个有球员的名字,另一个有得分。像这样:
Player Points
Foo 10
Bar 11
Foo 23
Test 9
Joe 1
Foo 2
我要做的是获得球员组合列表的积分标准差。
例如,如果我有这个清单:
Foo
Bar
我希望标准偏差为10,11,23和2,因为这些是与这两个玩家匹配的值。
我尝试过这个公式:
=STDEV(IF(OR(A:A="Foo",A:A="Bar"),B:B,""))
但是我得到了一个不同的答案,而不是我在它应该使用的个别数字上使用STDEV公式。
任何人都知道这是否可行?谢谢!
答案 0 :(得分:1)
您可以使用以下数组公式(Ctrl + Shift + Enter):
=STDEV(IF((A:A="Foo")+(A:A="Bar")>0;B:B))
答案 1 :(得分:1)
您的公式不起作用,因为如果其参数的任何为真,OR
将返回true。由于列表中至少有一个Foo,OR
始终返回true,因此IF
会返回B
列中的所有值。
您可以输入:=OR(A:A="Foo")
来查看。它会显示TRUE
。
另一种方法是进行子字符串搜索,例如FIND("|"&A:A&"|","|Foo|Bar|")
。
我使用管道(|)作为分隔符。
这将返回#VALUE!如果找不到,但在这些情况下您可以使用ISNUMBER
返回false。
然后您的公式变为=STDEV(IF(ISNUMBER(FIND("|"&A:A&"|","|Foo|Bar|")),B:B))
。
以数组公式输入: Ctrl + Shift + 输入。
在处理整个列时,数组公式可能非常慢。因此,您可能希望将数据限制在实际范围内 - 在此示例中为A2:A7和B2:B7:
答案 2 :(得分:1)
@Rick是对的,但更简单的方法来纠正" OR
的行为是在其位置使用简单的+
(需要是数组公式,因此使用 Ctrl + Shift + 输入) - >
=STDEV(IF((A:A="Foo")+(A:A="Bar"),B:B,""))