如何从条件中获得最新的值
我有一个在Excel中的表格,其中有列:
- date
- 人名
- 金额(英镑)
这张表是用来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
在单元格D3
input以下数组公式(即在公式中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数组公式。
我不能在这里看到一个简单的方法来做到这一点只有一个公式。
如果你有你的数据从A2
到C11
。
你可以添加这个公式在第4列(比方说在单元格D2
):
{=MAX(IF($B$2:$B$11=B2,$A$2:$A$11,0))}
这是一个数组公式,您必须使用Ctrl – Shift – Enter进行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