Combining VLOOKUP, IF OR, and STDEV

不打扰是莪最后的温柔 提交于 2019-12-11 07:48:34

问题


In Excel I have two columns. One has a player's name and the other has points scored. Like this:

Player  Points
Foo     10
Bar     11
Foo     23
Test    9
Joe     1
Foo     2

What I'm trying to do is get the standard deviation of the points for a combined list of players.

For example, if I had this list:

Foo
Bar

I would want the standard devation of 10, 11, 23, and 2, since those are the values that match those two players.

I have tried this formula:

=STDEV(IF(OR(A:A="Foo",A:A="Bar"),B:B,""))

but I get a different answer than if I were to use the STDEV formula on the individual numbers that it should be using.

Anyone know if this is possible? Thanks!


回答1:


You can use following array formula (Ctrl+Shift+Enter):

=STDEV(IF((A:A="Foo")+(A:A="Bar")>0;B:B))



回答2:


Your formula doesn't work, because OR returns true if any of its arguments are true. Since there's at least one Foo in your list, OR always returns true, so IF returns all values in the B column.

You can see this by entering: =OR(A:A="Foo"). It will show TRUE.

An alternative is to do a substring search, such as FIND("|"&A:A&"|","|Foo|Bar|").

I'm using pipes (|) as delimiters.

This will return #VALUE! when not found, but you can use ISNUMBER to return false in those cases.

Your formula then becomes =STDEV(IF(ISNUMBER(FIND("|"&A:A&"|","|Foo|Bar|")),B:B)).

Enter as an array formula: Ctrl + Shift + Enter.

Array formulas can be really slow when working on entire columns. So you may want to restrict the data to the actual range – A2:A7 and B2:B7 in this example:




回答3:


@Rick is right, but a simpler way to "correct" ORs behaviour is to use the simple + in its place (needs to be array formula, so entered with Ctrl+Shift+Enter)-->

=STDEV(IF((A:A="Foo")+(A:A="Bar"),B:B,""))


来源:https://stackoverflow.com/questions/26794039/combining-vlookup-if-or-and-stdev

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!