Excel 日期之间的查找

Excel 日期之间的查找

我有一个电子表格,列出了每个客户及其状态发生变化的日期。例如

Client_Name   Transaction_Date    Status

ClientA       1/1/2017            Level_1

ClientB       2/1/2017            Level_2

ClientA       3/1/2017            Level_3

在上例中,ClientA 从 2017 年 1 月 1 日到 2017 年 2 月 28 日处于 Level_1 状态,之后处于 Level_3 状态。我想构造一个查找,以客户名称和日期为依据,返回该日期的状态。因此,所需的输出将是:

Client_Name   Evaluation_Date    Status

ClientA       1/1/2016            NA/ERROR

ClientA       1/2/2017            Level_1

ClientA       3/2/2017            Level_3

VBA 解决方案也很好。没有数组公式的东西会很理想,因为这将在一个非常大的表上运行,但我意识到这可能是不可能的。

答案1

根据我对您问题的最佳理解,我建议一个解决方案,该解决方案基于您的交易日期(至少对于同一客户)按升序排列的假设。如果不是,请先按客户名称对表格进行排序,然后按交易日期进行排序。此外,请在数据上方保留至少一个单元格,因为该行号在解决方案中被引用。尝试此解决方案,如果此解决方案对您有用,请恢复原状。

在此示例中,示例表位于单元格 B4:D12 中。在 E4 中输入客户,在 F4 中输入日期。

现在在 G4 中输入以下公式,然后在公式栏中按 CTRL + SHIFT + ENTER 来创建数组函数。

=IF(MAX(IF(1=IF(F4>=IF($B$4:$B$12=E4,$C$4:$C$12,2958352),1,0),ROW($C$4:$C$12)-ROW($C$3),0))=0,"Not Found",INDEX($D$4:$D$12,MAX(IF(1=IF(F4>=IF($B$4:$B$12=E4,$C$4:$C$12,2958352),1,0),ROW($C$4:$C$12)-ROW($C$3),0))))

当您在 E4 和 F4 中输入客户名称和日期时,G4 将显示相关级别。如果日期早于任何起始级别日期,则显示“未找到”。

在此处输入图片描述

答案2

我能想到的唯一解决方案是使用数组,尽管它可能不是您直接首选的,但它仍然是一个选项。

{=IFERROR(VLOOKUP("ClientA"&"1/1/2016",CHOOSE({1,2},A2:A12&B2:B12,C2:C12),2,0),"NA/ERROR")}

您只需将“ClientA”和“1/1/2016”更改为您正在查找的单元格,A2:A12并且B2:B12将代表您正在查找的 2 列,即 Client_Name 和 Evaluation_Date

最后C2:C12是您希望返回值的列表形式,在您的情况下是状态。

在此处输入图片描述

相关内容