Excels INDEX MATCH - 查找多个匹配项

时间:2015-06-10 13:12:58

标签: excel excel-formula

------A ----------------- B ----------------------C ------------------------D  
1 --First--------------Last-----------------Start Date--------------End Date  
2 --John--------------Smith--------------08/08/2014------------01/01/2015  
3---John--------------Smith--------------08/11/2014------------17/11/2014  
4---John--------------Smith--------------06/06/2014------------23/12/2014  
5---Abel--------------Jones--------------14/05/2014------------29/04/2015  
6---Abel--------------Jones--------------04/07/2014------------26/04/2015

有时在我的电子表格上,我会得到重复的名字。例如,上表(随机数据)有3个约翰和2个阿贝尔。这些名称是开始日期和结束日期。如果我的开始日期或结束日期早于或晚于该名称的上一个条目,我会通过

计算最长范围(John Smith)
=MAX($D2:$D4)-MIN($C2:$C4)

这将给出209天 此外,我希望公式自动识别名称是否在范围内有重复,如果是,则检索日期。为此,我按如下方式执行INDEX MATCH功能。

    =INDEX(C:C,
MATCH(1,INDEX((A:A=$A3)*(B:B=$B3),0),0))

这应该是2014年8月8日 然后,我将两个公式组合在一起,搜索比较匹配开始日期和结束日期的名字和姓氏,以找到最长的日期范围。

=MAX(
   (INDEX($C:$C,
       MATCH(1,INDEX(($A:$A=$A4)*($B:$B=$B4),0),0)))
:$D4)
-
MIN(
   (INDEX($D:$D,
       MATCH(1,INDEX(($A:$A=$A4)*($B:$B=$B4),0),0)))
:$C4)

这再次给出了209. 我现在使用这个公式的问题是,当INDEX MATCH函数扫描名称列表以找到重复时,如果是,它将仅匹配第一个。如果有多个副本,它将忽略它。表中有3个John Smiths,我希望公式检查所有重复项之间的最长范围。 这是否有意义,这可能吗?

1 个答案:

答案 0 :(得分:3)

使用数组公式时,我会更加手术地定义范围。给定小数据集,此数组公式给出了预期结果:

=MAX(IF(INDEX($A$2:$A$6&" "&$B$2:$B$6, 0) = A2&" "&B2, $D$2:$D$6)) - MIN(IF(INDEX($A$2:$A$6&" "&$B$2:$B$6, 0) = A2&" "&B2, $C$2:$C$6))

...通过Control + Shift + Enter确认激活阵列。