2012-06-28 105 views
3

enter image description here我有使用2個單元的組合10個語句非常粗略的解決方法更好的解決方法,如下Excel 2003中:10 if語句

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種可能的狀態(如果語句)與如何得分計算如下:

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) 

在「得分」陣列將沿着線如下:

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

的問題是我不知道如何把它放在一起才能使它工作,即我必須將我的公式擴展到300個單元,但我不知道如何實現它,以便數組爲每個玩家正確計算分數?

有人可以幫忙嗎?

+0

如果你可以發佈一個電子表格,甚至是屏幕截圖,它可能有助於澄清事情。 –

+0

是的,這是一個好主意。這很難寫出來。我會在幾分鐘內上傳一個示例....只需要研究如何去做 – user1432365

+0

上傳的圖片,但無法解決如何上傳我創建的示例文件。我們希望,該截圖是不夠好,如果不是讓我知道我將會上傳到文件共享網站等BTW,爲感謝和期待您的幫助 – user1432365

回答

3

如果我理解正確,我想接近它是這樣的:

設置指定的二進制值的矩陣,對於每一個狀態,這列應該被添加了。使用OFFSETMATCH查找每個數據行的狀態,並返回二進制值的陣列/範圍,SUMPRODUCT總結這一切。見截圖:

enter image description here

+1

+1 ....但我可以建議一個「改善」?非易失性INDEX是通常優選的揮發性OFFSET,即= SUMPRODUCT(INDEX(B $ 4:E $ 13 MATCH(A19,A $ 4:$ 13,0),0),B $ 19:E $ 19) –

+0

1爲非常真實的改善。我開始編寫INDEX,但由於某種原因,我不認爲它可能會返回一個數組。 –

+0

安迪:非常好!工作過,感謝您的幫助 – user1432365