从多个工作表获取最新的实例

我正在做一个Excel工作表,并试图从多个工作表中获取最近发生的事件。 我目前有三张。

工作表1被称为“食谱”,它列出了9个配方,每个配方都有一个独特的配方编号:

在这里输入图像说明

我还有另外两张纸,“2017”和“2016”,我在那里列出几个date,哪一个是在那个date制作的,是谁做的:

在这里输入图像说明

在这里输入图像说明

现在我想要的是在食谱表上,列出每个食谱已经做了多less次,最后一次做了什么以及由谁做的。 像这样:

在这里输入图像说明

使用计数function已经多less次了。 但是最近做的更加棘手。 我发现这篇文章有一个函数来获取最新的东西,这非常有帮助。 所以我用这个公式:

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

为了让我在2017年制作最后的配方时,效果很好:

在这里输入图像说明

但是,正如你所看到的,谈到蓝莓松饼,这是行不通的,因为那个配方不是在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)) ) 

但是这不起作用。 最简单的方法是什么?

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,可能会有更有效的伪MAXIFfunction。 AGGREGATEfunction的SMALL子function可以让你获得最新的,第二个最新的,第三个最新的,等等。

最简单的方法是将所有数据都放在一个范围内。

另一种select可能是一连串的IFERROR函数,但随着时间的推移会变得有点麻烦:

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

还有其他更高级的非公式选项,例如Power Query或Microsoft Query,我认为这些选项更合适一些,但可能更难学。