请在下面找到我的问题陈述:
要求:对于下面显示的记录中的每一行,我想在10分钟范围内找到记录,并且在数量的+ -15单位内。然后找到与当前记录最接近的记录并获取价格值。
示例:假设Sno = 1的第一条记录,落在10分钟时间范围内并且在+ -15单位数量内的记录是Sno = 2,4,6的记录。在这三个记录中,最接近时间范围的记录是记录Sno = 2.因此,我希望得到记录的价值值,其中Sno = 2即12。
感谢您的帮助:)
由于 RVK
答案 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.