我在Excel中有一个表格,其中包含以下列:
该表用于记录人们何时付钱给我。通常情况下,我可以在同一天让不止一个人付钱给我。此外,同一个人会在很长一段时间内付钱给我。
记录会添加到表格的底部,因此订单将按日期排序,但不会对名称或金额进行进一步排序。
使用公式,有没有办法可以检索特定人员的最新金额?
如果这太复杂或不可能,那么我可以满足以下工作: 将第4列添加到名为“Last”的表中。如果它是特定人员的最后一个条目,则显示为TRUE,如果不是,则显示为FALSE。
答案 0 :(得分:2)
感觉应该有一个相当直截了当的答案,但我觉得它很头疼,所以有兴趣看到答案。
完成了一些谷歌搜索后,我遇到了一个专门的excel网站(view here)上发布的解决方案。 [NB - 查看标题'任意查询']
将其应用于您的示例,假设您的数据位于A1:C10
和单元格D2
中,您希望输入名称并返回单元格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
中输入以下内容作为数组公式(即输入公式,然后按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)
如果您需要更多详细信息,建议您查看我提供的链接。为清楚起见,我只是从提供的链接中修改了公式(更改了单元格引用)。
答案 1 :(得分:2)
根据我在a previous SO post中给出的答案,这是一种方法。
=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是Person Name列,C是Amount列。您必须按Ctrl + Shift + Enter键将其作为数组公式输入。
答案 2 :(得分:1)
我在这里看不到一个简单的方法,只用一个公式来做。
如果您的数据从A2
到C11
您可以在4 th 列中添加此公式(比如在单元格D2
中):
{=MAX(IF($B$2:$B$11=B2,$A$2:$A$11,0))}
这是array formula你必须通过 Ctrl - Shift - 输入来验证 这将告诉您当前人的最后日期是什么。
然后找到另一列的最后一笔金额(比如在单元格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更聪明(也更快)并在第一时间提供解决方案