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

Excel 从多个工作表中获取最新实例,excel,excel-formula,Excel,Excel Formula,我正在处理excel工作表,并试图从多个工作表中获取最近发生的事件。我现在有三张床单 表1称为“配方”,列出了9种配方,每种配方都有一个唯一的配方编号: 我还有另外两张表,“2017”和“2016”,其中我列出了几个日期,哪个配方是在那个日期制作的,是谁制作的: 现在我想要的是,在食谱表上,列出每个食谱制作了多少次,最后一次制作,以及由谁制作。像这样: 使用计数函数可以很容易地完成多少次。但最新的一项更为棘手。我发现,它有一个函数来获取某个东西的最新实例,这非常有用。所以我用了这个公式:

我正在处理excel工作表,并试图从多个工作表中获取最近发生的事件。我现在有三张床单

表1称为“配方”,列出了9种配方,每种配方都有一个唯一的配方编号:

我还有另外两张表,“2017”和“2016”,其中我列出了几个日期,哪个配方是在那个日期制作的,是谁制作的:

现在我想要的是,在食谱表上,列出每个食谱制作了多少次,最后一次制作,以及由谁制作。像这样:

使用计数函数可以很容易地完成多少次。但最新的一项更为棘手。我发现,它有一个函数来获取某个东西的最新实例,这非常有用。所以我用了这个公式:

=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))
)

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

如果成功,函数将返回正常值;如果失败,函数将返回提供的值。将零传递回
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函数。聚合函数的小个子函数允许您获取最新、第二最新、第三最新等数据。

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

另一个选项可能是一系列
IFERROR
函数,但随着时间的推移,这会变得有点混乱:

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

还有其他更高级的非公式化选项,如Power Query或Microsoft Query,我认为它们更合适,但可能更难学习。

非常有效。谢谢这是一个混乱的公式,但我会接受:)