Excel 2003:10个if语句的更好的解决方法

时间:2012-06-28 21:21:27

标签: excel if-statement

enter image description here我使用2个单元格的组合对10个语句进行了非常粗略的解决方法,如下所示

Cell 1 (O2)
=IF(C2="TW2-OUT",VLOOKUP($D2,Players,8,FALSE)+VLOOKUP($D2,Players,9,FALSE),IF(C2="TW2-IN",IF($D2="","",VLOOKUP($D2,Players,10,FALSE)),IF(C2="Playing",IF($D2="","",VLOOKUP($D2,Players,8,FALSE)+VLOOKUP($D2,Players,9,FALSE)+VLOOKUP($D2,Players,10,FALSE)),IF(C2="IN1OUT2",VLOOKUP($D2,Players,9,FALSE)+VLOOKUP($D2,Players,10,FALSE),IF(C2="TW1-OUT",IF($D2="","",VLOOKUP($D2,Players,8,FALSE)),IF(C2="TW1-IN",IF($D2="","",VLOOKUP($D2,Players,9,FALSE)+VLOOKUP($D2,Players,10,FALSE)),IF(C2="TW3-OUT",VLOOKUP($D2,Players,8,FALSE)+VLOOKUP($D2,Players,9,FALSE)+VLOOKUP($D2,Players,10,FALSE),0)))))))+P2

Cell 2 (P2)
 =IF(C2="TW3-IN",IF($D2="","",VLOOKUP($D2,Players,11,FALSE)),IF(C2="IN2OUT3",VLOOKUP($D2,Players,10,FALSE),IF(C2="IN1OUT3",VLOOKUP($D2,Players,9,FALSE)+VLOOKUP($D2,Players,10,FALSE),0)))

有没有更好的方法来做到这一点。我已经通过Google搜索了解了如何使用带有数组的表方法来实现相同的效果。但是,在我的情况下,玩家的状态决定了玩家的得分,这对我来说很复杂。以下是10种可能的状态(if语句),按如下分类计算得分:

TransferStatuses    Cols
Playing             8+9+10+11
TW1-IN              9+10
TW1-OUT             8
TW2-IN              10+11
TW2-OUT             8+9
TW3-IN              11
TW3-OUT             8+9+10
IN1OUT2             9
IN1OUT3             9+10
IN2OUT3             10



8 = ColK (Transfer Window 0)
9 = ColL(Transfer Window 1)
10 = ColM (Transfer Window 2)
11 = ColN(Transfer Window 3)

'score'数组将如下所示:

=VLOOKUP(C2,$S$2:$T$11,2,FALSE)

问题在于我不知道如何将它们放在一起使其工作,即我必须将我的公式扩展到300个单元格但我不知道如何实现它以便数组计算得分每个球员都正确吗?

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

如果我理解正确的话,我会这样做:

设置二进制值矩阵,为每个状态指定应添加哪些列。使用OFFSETMATCH查找每个数据行的状态并返回二进制值的数组/范围,并SUMPRODUCT将其全部加起来。见截图:

enter image description here