查找/索引/匹配

时间:2019-09-18 23:52:07

标签: excel-formula

查找条件:

  1. 不同经销商的政策期限不同。每个经销商都有自己的保单期限。
  2. 根据损失发生的日期,我需要找出该损失属于哪个时期。

数据集:

这是我需要更新期间和年份的文件

Result Table1a

另一个文件,其中包含策略开始和结束时间以及其所属年份的详细信息。不同的OEM的策略开始时间不同。根据损失的日期,我们需要找出损失的日期属于哪个时期。

Data Table

尝试使用索引,匹配和查找功能。

=INDEX(PeriodLookup[[#All],[OEM]:[Policy Year]],MATCH([@[OEM Name** Updated]],PeriodLookup[[#All],[OEM]],0),MATCH(Attach_C[[#All],[Date of Loss]],PeriodLookup[[#All],[Effective]],1))

这是预期的结果:

enter image description here

1 个答案:

答案 0 :(得分:0)

假设您具有以下命名范围

  • OEM OEM表中的PeriodLookup列;
  • 有效是您的Effective表中的PeriodLookup列;
  • 策略期是您的Policy Period表中的PeriodLookup列。
  

方法:1:在排序的数据中找到Year

如果您的数据已按名称分组并按日期从小到大的顺序排列(这很重要),则可以使用 VLOOKUP 已过滤中查找最接近的生效日期。使用 IF 函数,然后使用 YEAR 函数来确定有效日期的年份。这是要放入单元格D2中以查找年份的公式:

{=IFERROR(YEAR(VLOOKUP(B2,IF(OEM=C2,Effective),1,1)),"NA")}
  

方法2 :在随机排序的数据中找到Year

如果数据是随机排序的,则可以先使用 AGGREGATE 函数对已过滤的有效日期范围进行排序,然后再使用 INDEX + MATCH 以返回范围中最接近的匹配项。如果不匹配,以下数组公式将返回NA

{=IFERROR(YEAR(INDEX(AGGREGATE(15,6,IF(OEM=C2,Effective),ROW($A$1:INDEX($A:$A,ROWS(OEM)))),MATCH(B2,AGGREGATE(15,6,IF(OEM=C2,Effective),ROW($A$1:INDEX($A:$A,ROWS(OEM)))),1))),"NA")}

知道年份后,您可以使用 INDEX + MATCH 返回另一个已过滤范围内的相应保单期。这是要放在单元格E2中以查找期间的公式:

{=IFERROR(INDEX(Policy_Period,MATCH(D2,IF((OEM=C2),YEAR(Effective)),0)),"")}
  

提醒一下,所有使用的公式都是 Array Formula ,因此您需要按   输入公式后,在公式栏中输入 Ctrl + Shift + 输入,否则将不会返回正确的结果。然后,您可以将它们向下拖动以全面应用。

方法1

的屏幕截图

Example1

方法2

的屏幕截图

Example2

如果您有任何疑问,请告诉我。干杯:)