我有一个电子表格,列出了每个客户及其状态发生变化的日期。例如
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 将显示相关级别。如果日期早于任何起始级别日期,则显示“未找到”。