我在网站上研究了这个问题,否则我仍然无法找到正确的答案。
Account Date Status
115937 4/29/2015 BegunFlow
116448 5/5/2015 EnrollmentRejected
116448 4/9/2015 Rejected
116523 4/24/2015 EnrollmentRejected
120070 4/29/2015 BegunFlow
120070 5/2/2015 BegunFlow
1736792 4/29/2015 Inactive
1736792 5/1/2015 BegunFlow
2755700 4/24/2015 EnrollmentSubmitted
10418622 4/9/2015 CreditFail
25058075 5/5/2015 Active
25058075 4/9/2015 Pending Start
34359030 4/9/2015 Pending Start
34362064 4/9/2015 Pending Start
161020809 4/9/2015 CreditFail
161020809 4/9/2015 CreditFail
161020809 4/10/2015 PreenrollmentCancel
405423048 5/9/2015 CreditFail
405423048 4/9/2015 CreditFail
415096105 4/9/2015 Waiting Termination
651119087 4/9/2015 Active
858051162 4/9/2015 Active
949429029 4/9/2015 Active
949429029 4/10/2015 Rejected
这是我一直在努力做的数据样本。我希望能够将帐户列与日期列中的最近日期进行匹配,并返回相应的状态列。
这是我试过的公式
=VLOOKUP(MAX(IF($A:$A=E1,$B:$B)),$B$1:$C$24,2,0)
此公式的问题是它将日期转换为数字。我有大行。
答案 0 :(得分:0)
问题不在于将日期转换为数字。问题来自将数组公式的输出转换为输入。
如果您将MAX/IF
与VLOOKUP
分开,则会有效。只需将您要查找的MAX
输出到一个单元格中,然后将该单元格用作VLOOKUP
的输入。
答案 1 :(得分:0)
您可以使用与匹配和索引相结合的数组公式来执行此操作。
类似于:=INDEX($C:$C,MATCH(MAX(IF($A:$A=$E$1,$B:$B,0)),IF(A:A=$E$1,$B:$B,0),0))
应该管用。您需要按Ctrl-Enter键将其作为数组公式输入以完成编辑。
基本上这是创建一个过滤日期列(IF($A:$A=$E$1,$B:$B,0)
),选择最大值,找到行(INDEX
),然后使用它来查找C列(MATCH
)
答案 2 :(得分:0)
使用提供的样本数据计算出以下内容。
如果我的理解是正确的,那么你要找的是一个返回\的公式,突出显示以下内容:
Account Date Status
405423048 05/09/2015 CreditFail
但是,也注意到有几个帐户共享一个共同日期,因此在上述记录不存在的情况下,最新日期为05/09/2015
,最新记录的结果如下:
Account Date Status
116448 05/05/2015 EnrollmentRejected
25058075 05/05/2015 Active
所以我在这里指出的是,最新状态更新的帐户的结果可能是具有多个记录的Range \ Array
现在,有了这个,我们至少可以有两种输出:
下面提出的公式将满足的要求(如果您的要求确实不同,请告知)
首先,我们应该在源数据中添加一个Field (称为“Latest”)以反映公式的结果,我们使用列“D”,输入以下内容此字段中每条记录的公式(这不是FormulaArray):
=IF(B7=MAX($B:$B),"Latest Record","")
按{F9}(如果使用手动计算),那么最新更新的所有记录将在字段字段下的源数据中“标记”为Latest Records
此处此处满足输出1。
如果要求是输出2,则: 使用字段"最新“使用值"最新记录"”过滤源数据, 选择源数据中的VisibleCell,然后将VisibleCells的范围粘贴到目标目标。
然而,由于这似乎是一项重复的任务,我建议创建一个宏来完成它。