在处理 Excel 中的多列日期表时,会遇到不同的情况。以下详细讲解两种常见情况以及相应的解决方法。

一、每行数据从左到右按日期从小到大排列的情况

当每行日期是从小到大排列时,每行最后更新的日期自然就是这一行中的最大值。所以,我们可以将这个问题简化为求一行数据中的最大值。

Excel中多列日期表获取每行最后日期的方法-趣帮office教程网

使用 MAX 函数:

公式及参数解释

公式为 “=MAX (C2:XFD2)”。其中,“C2:XFD2” 表示要操作的单元格区域,这里是取第二行从第三列(C 列)到最后一列(XFD 列)的数据范围。MAX 函数会在这个区域中找到最大值,这个最大值就是该行最后更新的日期。

自动更新特性

这个公式的一个优点是,如果后续日期更新,Excel 会自动重新计算结果。例如,当在这一行的某个日期单元格中输入一个更大的日期值时,公式会立即更新并返回新的最大值,也就是最新的最后日期。

二、仅有标题是日期格式的情况

在这种情况下,我们需要找到每一行最后一个非空单元格的位置,然后以这个位置为基准,偏移到第一行来获取对应的日期值。这种情况可以使用lookup函数来实现:

=LOOKUP(1,0/(C2:XFD2<>""),$C$1:$XFD$1)

Excel中多列日期表获取每行最后日期的方法-趣帮office教程网

公式步骤分解:

步骤一:判断非空单元格

公式中的 “C2:XFD2<>""” 部分,它的作用是判断第二行(以第二行为例,实际应用中可以根据需要修改行号)的数据是否为空。这会得到一个由 TRUE 和 FALSE 构成的逻辑数组。例如,如果 C2 单元格有数据,对应的位置就是 TRUE;如果为空,则为 FALSE。

步骤二:转换数组形式

“0/(C2:XFD2<>"")” 这部分是将前面得到的逻辑数组进行转换。它会把符合条件(即非空单元格)的转换为 0,不符合条件(空单元格)的转换为错误值 #DIV/0!。这样就得到了一个新的数组,形式可能为 #DIV/0!、0、#DIV/0!、0、#DIV/0!……

步骤三:利用 LOOKUP 函数特性查找

LOOKUP 函数在这里的查找值是 1。由于 LOOKUP 函数具有自动忽略错误值和向下匹配的特征,它会忽略数组中的错误值 #DIV/0!,只关注 0。并且,它的向下匹配机制是如果没有找到完全匹配的结果(这里不太可能找到 1 这个值,因为数组中只有 0 和错误值),则返回小于查找结果的最大值,在这个例子中就是返回数组中最后一个 0 所对应的单元格。

步骤四:偏移获取日期值

“$CXFD$1” 这部分利用了 LOOKUP 函数最后一个参数可以偏移返回其它单元格区域的值的特点。通过前面步骤找到最后一个非空单元格在第二行(同样,行号可根据实际调整)的位置后,以这个位置为基准,从第一行(标题行)中获取对应的日期值,从而得到该行最后一个非空单元格对应的日期。

结语

在 Excel 中,对于求某行 / 列的第一个 / 最后一个非空单元格的问题,除了上述介绍的 LOOKUP 函数外,还可以根据具体情况使用其他函数组合来实现。例如,使用 INDEX MATCH 函数或者 SUMPRODUCT 函数等。而且,除了使用函数方法外,还可以利用 PowerQuery 或者 VBA 等功能来解决。在实际应用中,应该从不同的角度灵活分析问题,结合自己的知识和经验,找到最适合自己的方法来处理数据。