根据多个条件在EXCEL中找到最匹配的匹配项

时间:2013-06-22 08:00:33

标签: excel excel-formula

请在下面找到我的问题陈述:

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

示例:假设Sno = 1的第一条记录,落在10分钟时间范围内并且在+ -15单位数量内的记录是Sno = 2,4,6的记录。在这三个记录中,最接近时间范围的记录是记录Sno = 2.因此,我希望得到记录的价值值,其中Sno = 2即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

1 个答案:

答案 0 :(得分:2)

假设A2:D7中的数据,请输入E2并填写:

=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):

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

B:=FREQUENCY(0,{...})返回{0;1;0;0;0;0;0},这是15个数量单位内最接近的时间匹配。 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.