2017-03-12 24 views
1

我正在處理一個Excel工作表,並嘗試從多個工作表中獲取最近發生的事件。我目前有三張。從多個工作表中獲取最新的實例

表1被稱爲 「配方」,並列出9個配方,每一個獨特的配方號:

enter image description here

我有其他兩個片材, 「2017」 和 「2016」,其中我列出幾個日期,其配方以該日,和誰做的:

enter image description here

enter image description here

現在我想要的是在食譜表上,列出每個食譜做了多少次,上次做了什麼,以及由誰做的。像這樣:

enter image description here

多少次它已經取得了具有計數功能,非常的方便。但最近的製作更加棘手。我找到了this article,它有一個函數來獲取最新的東西,這非常有幫助。所以我用這個公式:

=INDEX('2017'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2017'!$C$2:$C$10)*($A2='2017'!$C$2:$C$10))-1)) 

爲了讓我當配方在2017年寫了最後,這工作得很好:

enter image description here

但正如你所看到的,當它涉及到的藍莓鬆餅,這是行不通的,因爲那個配方不是在2017年製作的。我需要將配方擴展到多年。我也可以在過去增加更多的年份。我認爲我可以將多個上述功能連接成一個巨大的MAX功能,每年一個,如下所示:

=MAX(
INDEX('2017'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2017'!$C$2:$C$10)*($A2='2017'!$C$2:$C$10))-1)), 
INDEX('2016'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2016'!$C$2:$C$10)*($A2='2016'!$C$2:$C$10))-1)) 
) 

但是這並不奏效。最簡單的方法是什麼?

回答

2

IFERROR函數在成功時返回正常值,如果失敗則返回提供的值。將零傳遞迴MAX應該足夠了。

=MAX(
    IFERROR(INDEX('2017'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2017'!$C$2:$C$10)*($A2='2017'!$C$2:$C$10))-1)), 0), 
    IFERROR(INDEX('2016'!$A$2:$A$10,SUMPRODUCT(MAX(ROW('2016'!$C$2:$C$10)*($A2='2016'!$C$2:$C$10))-1)), 0) 
) 

FWIW,可能會有更高效的僞MAXIF函數。 AGGREGATE功能的SMALL子功能可以讓你獲得最新的,第二次的最新的,第三次的最新的等等。

+0

完美地工作。謝謝! – eshellborn

+0

這是一個公式的混亂,但我會把它:) – eshellborn

1

最簡單的是將所有數據放在一個範圍內。

另一種選擇可能是IFERROR功能鏈,但會變得有點凌亂隨着時間的推移:

= IfError(Index2007, IfError(Index2006, IfError(Index2005,))) 

也有像電源查詢或Microsoft查詢其他更先進的非配方的選擇,我認爲更合適一些,但可能更難學習。

相關問題