根据多个条件查找EXCEL中最接近的匹配项

请在下面find我的问题陈述:

要求:对于以下显示logging中的每一行,我想在10分钟范围内findlogging,并在数量的+15单位内findlogging。 然后find与当前logging最接近的logging并获取价格值。

例如:对于Sno = 1的第一条logging,logging在10分钟时间范围内和在-15单位数量内的logging是Sno = 2,4,6的logging。 在这三个logging中,在时间范围内最接近的logging是Sno = 2的logging。所以我想得到Sno = 2的logging的价格值,即12。


  • Sno价格数量时间
  • 1 10 100 05/08/2013 10:12:13 AM
  • 2 12 111 05/08/2013 10:10:11 AM
  • 3 13 123 05/08/2013 10:22:13 AM
  • 4 2 111 05/08/2013 10:22:13 AM
  • 5 13 112 05/08/2013 10:42:13 AM
  • 6 14 100 05/08/2013 10:15:13 AM

感谢你的帮助 :)

谢谢RVK

假设A2:D7数据,inputE2并填写:

=LOOKUP(2,1/(ABS(D$2:D$7-D2)<TIME(,10,1))/FREQUENCY(0,ABS(D$2:D$7-D2)*(2*(ABS(C$2:C$7-C2)<=15)-1)-(A$2:A$7=A2)),B$2:B$7)

说明

该公式可以分解为几个部分(通过突出显示公式栏中的选定部分并按F9):

A: =(ABS(D$2:D$7-D2)<TIME(0,10,1))返回{TRUE;TRUE;TRUE;TRUE;FALSE;TRUE}这是一个数组,表示是否在10分钟内或10:01来四舍五入)

B: =FREQUENCY(0,{...})返回15个数量单位内最接近的时间的{0;1;0;0;0;0;0}ABS(D$2:D$7-D2)*(2*(ABS(C$2:C$7-C2)<=15)-1)返回一组时间差,如果产品在15个单位内,否则, -(A$2:A$7=A2)被添加,所以当前行返回负数。 在第一个参数中为零,频率函数将忽略这些负数。

C:= LOOKUP(2,1/A/B,B$2:B$7)返回相应的匹配,其中A和B都是1或TRUE。 使用倒数作为LOOKUP忽略错误,如果找不到匹配,LOOKUP将返回#N / A。