excelperfect
很奇怪的问题,意想不到的公式。
如下图1所示,在列A中有一组数值,其中有很多0值,要求将列A中的数值转换成列B中的数值,也就是说,在0之间的单元格使用这些单元格中的最大值填充。
图1
如何使用公式来实现?
初看这个问题,我感觉有点不可能实现,因为分隔的0的个数不相同,要求每段的最大值,起始和终止点也不一样,但仍然有人实现了。这正应了那句话,没有做不到,只有想不到。
其解决方案是,在单元格B3中输入公式:
=IF(IF(A3<>0,MAX(OFFSET(A2,,,MATCH(0,A3:A15,0),1),B1))=FALSE,0,IF(A3<>0,MAX(OFFSET(A2,,,MATCH(0,A3:A15,0),1),B1)))
然后下拉拖放至数据末尾。
这个公式很巧妙!OFFSET函数与MATCH函数配合来动态扩展区域,从而使得查找的范围永远落在两组0之间的单元格区域,然后MAX函数中与已经获得的最大值(即公式所在单元格上方的单元格中的值)比较,取最大值。
公式中的IF函数条件判断部分也很有特点,如果相邻单元格中的值为0,则公式单元格中的值就为0,否则使用公式来求最大值。
这个公式有点绕,因为要求的数据本身就有点绕,但仔细理解,还是很有意思和启发的。
联系客服