有这样一个示例,要求查询每个材料的最新采购价格和最新采购日期,这里A列的日期是按照时间序列记录数据的。这个问题的解决方法有很多,就看你的解决问题思路是什么,你的函数储备有多少,函数使用能力如何,以及你对Excel基本规则了解程度如何。首先要弄清楚,什么是最新采购日期?从另一方面来说,日期是什么?最新日期又是什么概念?日期是数字,最新日期就是最大的日期,从这个思路出发,我们就可以先查找每个材料的最大日期(也就是最新采购日期),这个最大日期可以使用MAXIFS函数来解决。得到最新采购日期后,就可以使用INDEX函数和MATCH函数找出每个材料的最新采购价格。=MAXIFS($A$2:$A$34,$B$2:$B$34,F2)
=INDEX($C$2:$C$34,MATCH(F2&H2,$B$2:$B$34&$A$2:$A$34,0))
另外一个方法是,我们能否先将某个材料的所有采购记录筛选出来,然后对该材料的采购记录按照日期做降序排序,这样就生成了一个该材料的采购记录表,然后取出第一个数据,就是该材料的最新采购价格和最新采购日期了。筛选数据可以使用FILTER函数,提取数据则可以使用INDEX函数,参考公式如下。=INDEX(SORT(FILTER($A$2:$C$34,$B$2:$B$34=F2),1,-1),1,1)
=INDEX(SORT(FILTER($A$2:$C$34,$B$2:$B$34=F2),1,-1),1,3)
由于原始数据A列已经是按照日期序列记录数据的,也就是说A列日期是升序排序的,那么每个材料的最新采购价格和最新采购日期就是该材料最后一次出现的数据,再想想,用什么函数可以提取每个材料最后一次出现的数据呢?肯定首选LOOKUP函数了,此时参考公式如下:=LOOKUP(1,0/($B$2:$B$34=F2),$A$2:$A$34)
=LOOKUP(1,0/($B$2:$B$34=F2),$C$2:$C$34)
前面几个方法,都是需要先设计材料名称列表,然后根据材料名称获取每个材料的最新采购价格和最新采购日期。如果材料是不固定的,能否设计一个通用公式,直接得到各个材料的名称、最新采购价格和最新采购日期呢?这个思路也是很不错的,可以借助数据透视表的思路,使用PIVOTBY函数及其他函数来解决,参考公式如下。=LET(
统计,PIVOTBY(B2:B34,,A2:A34,MAX,0,0),
材料名称,CHOOSECOLS(统计,1),
最新日期,CHOOSECOLS(统计,2),
最新价格,INDEX(C2:C34,MATCH(材料名称&最新日期,B2:B34&A2:A34,0)),
HSTACK(材料名称,最新价格,最新日期)
)
这个公式很好理解,先使用PIVOTBY函数得到每个材料的最新采购日期(对日期做最大值计算),然后再根据材料名称和最新采购日期两个条件获取最新采购价格。如果你使用的Excel版本较低,上述的最大值函数MAXIFS、筛选函数FILTER以及汇总函数PIVOT都不能使用,那么就使用最基本的方法来解决,也就是做数组公式,参考公式如下:=MAX(IF($B$2:$B$34=F2,$A$2:$A$34,""))
=INDEX($C$2:$C$34,MATCH(F2&H2,$B$2:$B$34&$A$2:$A$34,0))
总之总之,解决方法很多,看你的肚里有多少货,你的想法是什么。如果肚子空空,想法也没有,那就去问问AI,看看AI能不能帮你解决这个问题。