一、如果每行数据从左到右是按日期从小到大排列的
那么每行最后更新的日期就是最大的那个日期,这个问题就可以转换为求一行最大值。
直接使用MAX函数即可得到结果:
=MAX(C2:XFD2)
公式解释:取第二行,从第三列到最后一列的最大值。如果后续日期更新,公式会自动重新计算。
二、如果仅有标题是日期格式
那么该问题转化为求每一行最后一个非空单元格的位置,并以该位置为基准,偏移至第一行,以取得日期值。
这种情况可以使用lookup函数来实现:
=LOOKUP(1,0/(C2:XFD2<>””),$C$1:$XFD$1)
公式解释:
(1)C2:XFD2<>””判断该行的数据是否为空,得到一个由TRUE和FALSE构成的数组
(2)0/(C2:XFD2<>””)可以将上面得到的数组转换为如下形式:#DIV/0!,0,#DIV/0!,0,#DIV/0!……
其中“0/”的作用是把符合条件的转换为0,不符合条件的转换为错误#DIV/0!
(3)查找值为1,是由于lookup函数具有自动忽略错误值和向下匹配的特征;忽略错误使得只保留所有0,向下匹配就是如果没有找到结果,则返回小于查找结果的最大值,本例中返回数组中最后一个0所对应的单元格。
(4)$C$1:$XFD$1则充分利用了lookup最后一个参数可以偏移返回其它单元格区域的值的特点,直接返回第一行中对应的日期。
结语:
关于求某行/列的第一个/最后一个非空单元格,除了使用lookup函数还可以根据具体情况使用index+match或者sumproduct等函数来实现,除了使用函数还可以使用PowerQuery或者VBA等功能实现,应多从不同角度灵活分析,找到最适合自己的方法。
「精进Excel」系头条签约作者,关注偶,如果任意点开三篇文章,没有你想要的知识,算偶耍流氓!