如何从条件中获得最新的值

我有一个在Excel中的表格,其中有列:

  1. date
  2. 人名
  3. 金额(英镑)

这张表是用来logging人们何时向我付钱。 通常情况下,我可以在同一天得到不止一个人的报酬。 而且,同一个人会在很多天内付款给我。

logging被添加到表格的底部,所以订单将在date,但没有进一步的名称或数量的顺序。

使用公式,有没有一种方法可以检索特定人员的最近金额?

如果这太复杂或不可能,那么我可以解决以下的工作:添加第四列名为“最后”的表。 如果它是特定人员的最后一个条目,则显示为TRUE,如果不是,则显示FALSE。

我觉得应该有一个相当直接的答案,但是我觉得这是一个很头疼的人,所以有兴趣看到答案。

做了一些谷歌search,我遇到了一个专门的Excel网站上发布的解决scheme( 查看这里 )。 [注意 – 查看标题'任意查找']

将其应用于您的示例中,假设您的数据位于A1:C10并在单元格D2中input了名称并返回单元格D3最新付款:

 1 Date Name Amt EnterName 2 20 Jul Bob 50 <enter name here> 3 13 Sep Susan 20 = enter formula here (see below) 4 06 Jan Xavier 100 

在单元格D3input以下数组公式(即在公式中input,然后按CTRL + SHIFT + ENTER

 =INDEX($B$2:$C$10,SMALL(IF(OFFSET($B$2:$C$10,0,0,ROWS($B$2:$C$10),1)=$D$2, ROW(OFFSET($B$2:$C$10,0,0,ROWS($B$2:$C$10),1))-ROW(OFFSET($B$2:$C$10,0,0,1,1) )+1, ROW(OFFSET($B$2:$C$10,ROWS($B$2:$C$10)-1,0,1,1))+1),COUNTIF(OFFSET($B$2:$C$10,0,0,ROWS($B$2:$C$10),1),$D$2)),2) 

如果你想要更多的细节,build议检查我提供的链接。 为了清楚起见,我仅仅从所提供的链接中调整了公式(改变的单元格引用)。

这是根据我在之前的SOpost中给出的答案做到的一种方法。

 =INDEX($C$1:$C$19,MATCH(MAX(IF($B$1:$B$19="PersonNameHere",$A$1:$A$19,0)),IF($B$1:$B$19="PersonNameHere",$A$1:$A$19,""))) 

其中A是date列,B是人员名称列,C是金额列。 您必须按Ctrl + Shift + Enter键input数组公式。

我不能在这里看到一个简单的方法来做到这一点只有一个公式。

如果你有你的数据从A2C11
你可以添加这个公式在第4列(比方说在单元格D2 ):

 {=MAX(IF($B$2:$B$11=B2,$A$2:$A$11,0))} 

这是一个数组公式,您必须使用CtrlShiftEnter进行validation
这将告诉你当前人的最后date是什么。

然后find另一列的最后一笔金额 (比方说在单元格E2 )并使用以下公式:

 =INDEX($C$2:$C$11,MATCH(D2,$A$2:$A$11,0)) 

[编辑]我只是试图把公式合并成一个,而且简单的工作:

 {=INDEX($C$2:$C$11,MATCH(MAX(IF($B$2:$B$11=B2,$A$2:$A$11,0)),$A$2:$A$11,0))} 

这仍然是一个数组公式。

唉,@Excellll更聪明(也更快),并在第一枪时给出了解决scheme