如何定位最后一个非空单元格? Excel二维表横向查找最晚更新的非空值技巧

  发布时间:2025-01-03 11:12:50   作者:佚名   我要评论
excel中查找功能很强的函数介绍,用它能巧妙的查找出来众多列中最后一个非空单元格的数值并返回此数值,详细请看下文案例

有读者遇到这么个问题:有一个二维表,其中的单元格并未全部填充满,如何根据行标题,向右查找出最新的值?

案例 一:

某公司近期因准备 IPO,要给员工配股,因此统计了 2016 年至今在职员工的职级,规则如下,如下图 1 的 A 至 F 列数据表所示:

统计每个人自 2016 年起的职级,如果职级发生变化,则连续向右填充至最新的状态,如果之后职级无更新,则留空不需要再填,根据 H2 单元格中填入的姓名,在 I2 单元格查找出该员工的最新职级。

效果如下图 2 所示。

解决方案:

1. 将 J 列设置为辅助列,在 J2 单元格中输入以下公式:

=COUNTA(INDEX(B2:F8,MATCH(H2,A2:A8,0),))

公式释义:

MATCH(H2,A2:A8,0):在 A2:A8 区域查找 H2,并返回其在区域中的位置

INDEX(B2:F8,...,):

返回 B2:F8 区域中指定行、列的值;

行数为上述 match 函数的查找结果;

列数为空,即不限定列,表示查找出区域中姓名与 H2 内容相同的所有单元格;

COUNTA(...):

COUNTA函数功能是返回参数列表中非空的单元格个数;

即统计出 H2 单元格的员工在区域中的职级共有几个非空单元格;

本例中,“诸葛钢铁”的职级共有 3 个单元格

2. 在 I2 单元格中输入以下公式:

=INDEX(B2:F8,MATCH(H2,A2:A8,0),J2)

公式释义:

MATCH(H2,A2:A8,0):再次使用 match 函数匹配出所需查找的姓名在 A2:A8 区域中的位置,并将其用作行号;

J2:将 J2 单元格,即上述辅助列的结果作为列号,即区域中的最后一列非空单元格;

INDEX(B2:F8,...,):用 index 函数在 B2:F8 区域中查找出行、列交叉位置的值

如果在 H2 中输入其他姓名,I2 单元格的结果也会随之变化。

案例二

一、使用MAX函数找到非空单元格的位置

MAX函数可以用来找到一列或一行所在的最大值,因此可以用它来找到非空单元格所在的位置。

=MAX(A:A)

上述公式将返回列A中最后一个非空单元格所在的行号。

同样地,如果要查找最后一个非空单元格所在的列号,可以使用以下公式:

=MAX(1:1)

二、结合INDEX函数返回非空单元格的值

一旦找到了最后一个非空单元格的位置,就可以使用INDEX函数返回该单元格的值。

=INDEX(A:A,MAX(A:A))

上述公式将返回列A中最后一个非空单元格的值。

同样地,如果要返回最后一个非空单元格所在的列的值,可以使用以下公式:

=INDEX(1:1,MAX(1:1))

三、使用VBA宏实现自动查找最后一个非空单元格

通过编写VBA宏,可以实现在大型工作簿中自动查找最后一个非空单元格。

可以使用以下代码实现:

Sub LastNonBlankCell()
    Dim LastRow As Long
    Dim LastCol As Long
    Dim LastCell As Range
    '查找最后一个非空行
    LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    '查找最后一个非空列
    LastCol = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
    '找到最后一个非空单元格
    Set LastCell = Cells(LastRow, LastCol)
    '选中最后一个非空单元格
    LastCell.Select
End Sub

上述代码中,Find函数代表查找函数,它可以对表格、行或列进行查找。SearchDirection参数表示查找的方向,SearchOrder参数则表示查找的顺序。

四、结合OFFSET函数实现动态查找

如果需要动态查找最后一个非空单元格,可以结合OFFSET函数实现。

可以使用以下公式实现在列A中动态查找:

=OFFSET(A1,COUNTA(A:A)-1,0)

上述公式中,COUNTA函数可以用来计算列A中的非空单元格数量,-1操作可以确定最后一个非空单元格所在的行号(基于A1作为起始点)。OFFSET函数可以用来定位该单元格并返回其值。

同样地,如果要动态查找最后一个非空单元格所在的列的值,可以使用以下公式:

=OFFSET(A1,0,COUNTA(1:1)-1)

推荐阅读:excel如何筛选最晚时间的记录? 一对多匹配结果中查找出日期最晚的技巧

相关文章

最新评论