2009-05-31 85 views
0

我需要一個公式來返回「文本」最後一場比賽的數據值。行號也是可以接受的。宏不可接受。名稱列未排序,無法排序! 僅列「名稱」用作查找值。我寧願使用/多個幫助列而不是數組公式。上一場比賽的返回值

Row Name Data 
1 Joe  10 
2 Tom  20 
3 Eva  30 
4 Adam 40 
5 Tom  21 

LARGE只適用於數字,而VLOOKUP只返回第一個匹配。 LOOKUP僅有時有效,所以它也是如此。

所以如果我想要最後一個匹配「湯姆」,那麼它應該返回「21」。

回答

0

我想出了一個解決方案,但它需要在數據數字是併發的,像這樣

Name  Data 
Joe   1 
Tom   1 
Eva   1 
Adam  1 
Tom   2 
Tom   3 
Eva   2 

但是那沒關係,因爲我的數據看起來像這樣反正。因此,如果之前使用了名稱,那麼它必須是舊的最高+1還是併發的。

名稱爲A1和數據B1是,並且該式中進入C2:

FLOOR(SQRT(2*SUMIF(A2:A7,A2,B2:B7)),1) 
0

創建數組公式的列(用Ctrl其輸入+ Shift + Enter鍵):

=VLOOKUP(MAX(IF($B$2:$B$6=B2, $A$2:A$6, 0)), $A$2:$C$6, 3, FALSE) 

要確保你做的對,單擊單元格,公式應顯示包裹大括號 ({})。

注意:這裏假定「行」在A1中。

+0

「行」不是A1。它只是爲了顯示哪些行被使用。名稱是A1,數據是B1。 – Kim 2009-05-31 18:11:58

1

數組公式可以與輔助柱來避免。 假設在F1有匹配(即湯姆) 在助手列排C2進入

=IF(A2<>$F$1,0,row()) 

然後沿配方數據副本的名稱。

現在列C包含0個不匹配的名稱和匹配的行號。最大化列產生解決方案的行。 現在的結果是簡單的使用了正確的使用功能失調偏移的問題:

=OFFSET(B1,max(C:C)-1,0) 

PS:我的Excel的複製是在意大利,所以我無法測試公式的這個英語translaction。

1

我認爲這是最簡單的方法。

=LOOKUP("Tom";A2:B7) 
+0

舉例說明! (但我認爲不是,一般來說)。 – pnuts 2015-12-12 16:54:55