如图,A:C列为源数据,列明了每个日期每种产品的价格,现在想根据E、F列对应的数据求出最近的一次价格,公式如下:
=MAP(F3:F8,LAMBDA(x,XLOOKUP(0,A:A/(B:B=x)-OFFSET(x,,-1),C:C,0,-1)))
公式思路:想到出最近的一次价格,肯定是找查找日期及以前的价格。xlookup第四参为-1实,xlookup自动寻找等于或者小于它的数据中最接近的数据。以E3为例,就会寻找所有小于等于3月17日且最接近3月17日的数据。
以x=F2为例,A:A/(B:B=x)-OFFSET(x,,-1)的意思为:A:A/(B:B=x)这个数组运算得到的结果为所有是牛肉的日期都会保留,所有不是牛肉的日期都变为错误值。A:A/(B:B=x)-OFFSET(x,,-1),中的offset函数指向了x倒退一列的数据,即E3,3月17日,这样会产生四种结果,小于3月17日的数据,等于3月17的数据,大于3月17日的数据和错误值。
根据四参为-1的运算法则,xlookup取小于等于3月17日的数值,这样就得到正确结果。
xlookup正常引用时是可以查找数据的,也就是批量查找。但当查找值为0时无法实现,所以再套用map实现一键生成数据。
评论 (0)