2014-09-22 53 views
1

我有在Excel表:查找MAX和SUM可變數目在Excel列沒有宏

A B C D  
     Day1 Day2 Day3 
1 Ron 3 2 2 
2 Don 4 2 1 
3 Ton 1 5 2 

位於不同的工作,我需要製作的類型的表(不使用宏) :

A B C D  
     Ron Don Ton 
1 Ron - - - 
2 Don 8 - - 
3 Ton 10 11 - 

其中值是每天的每對值的最大值,在所有天數之和中求和。因此,如果只是3個名稱和日期,我只需使用下面的公式和VLOOKUP即可查看每個名稱在特定日期的價值,並在每天覆制/粘貼該值。 (注意,實際上我的項目並不是那麼大,所以當我發佈這個問題時,我可以完成它,但我真的想學習如何以更聰明的方式來做到這一點)。

=SUM(MAX(VLOOKUP(Table2!$A2,Table1!$A:$D,2,FALSE), VLOOKUP(Table2!B$1,Table1!$A:$D,2,FALSE)), and so on Day2, Day3... 

我嘗試以下:

{=SUM(MAX(VLOOKUP(Table2!$A2,Table1!$A:$D,{2,3,4},FALSE),VLOOKUP(Table2!D$1,Table1!$A:$D,{2,3,4},FALSE)))} 

然而,顯然VLOOKUP不能返回的陣列(和INDEX MATCH不能要麼)。

任何幫助將不勝感激。

+1

其實它可以。問題是'SUM'和'MAX'無法評估它。所以你需要在另一個單元格中輸出你的矩陣或數組,然後在那裏執行'SUM'和'MAX'函數。就像我發佈[這裏](http://stackoverflow.com/questions/24833494/excel-what-should-iferror-return-in-order-to-avoid-value-error/24836039#24836039)。 – L42 2014-09-22 03:29:01

+0

實際上,[INDEX函數](http://office.microsoft.com/zh-cn/excel-help/index-function-HA102752976.aspx)除* *參考*表單外,還特別具有*數組表單* 。 – Jeeped 2014-09-22 05:32:04

+0

@Jeeped,這是真的,但在這種情況下的「數組形式」僅僅意味着INDEX的第一個參數是一個數組,而不是它返回一個數組 – 2014-09-22 12:59:12

回答

0

L42是正確的 - VLOOKUP有麻煩返回一個數組當查找值是一個範圍或陣列,但在適當位置的列索引號陣列,它返回一個數組沒有問題

要查看只需將一個VLOOKUP放入一個單元格中,例如

=VLOOKUP($A2,Table1!$A:$D,{2,3,4},0)

然後選中該單元格,按F2鍵來選擇配方和F9看到的結果,你會得到像={3,2,2}

的問題,您的公式的結果是,MAX只需要最大價值由兩個VLOOKUP小號返回的六個值的,它不比較兩個數組

要做到單個公式中可以使用以下形式的公式:

=SUM(IF(array1>array2,array1,array2))

,將比較2個陣列和在每個位置上求和的最大值,爲您的設置,這將是一個這樣的公式表2中B2

=IF($A2=B$1,"-",SUM(IF(VLOOKUP($A2,Table1!$A:$D,{2,3,4},0)>VLOOKUP(B$1,Table1!$A:$D,{2,3,4},0),VLOOKUP($A2,Table1!$A:$D,{2,3,4},0),VLOOKUP(B$1,Table1!$A:$D,{2,3,4},0))))

確認與CTRL + SHIFT + ENTER並向下和向下複製

如果你有一個la然後避免使用{2,3,4,5,6,7,8,9,10 ......等等。}您可以使用INDEX/MATCH,而不是VLOOKUP這樣

=INDEX(Table1!$B:$D,MATCH($A2,Table1!$A:$A,0),0)

注:INDEX這裏返回範圍(不是陣列)。 MATCH函數決定行號和一個作爲列參數意味着你得到整行返回