You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简洁拼接多列中最后一个非空单元格的值

如何简洁拼接多列中最后一个非空单元格的值

嗨,我懂你想要的是更清爽的解决方案——不用先给每列单独写公式计算最后非空值,再去拼接,对吧?其实完全可以把这两步合并成一个公式,一步到位搞定!

针对单一行的简洁公式(适用于所有Excel版本)

如果你只是想处理某一行(比如第4行),直接用这个公式就能得到A到L列每列到当前行的最后非空值拼接结果:

=TEXTJOIN("",TRUE,LOOKUP(2,1/(INDIRECT(CHAR(64+COLUMN(A:L))&"1:"&CHAR(64+COLUMN(A:L))&ROW())<>""),INDIRECT(CHAR(64+COLUMN(A:L))&"1:"&CHAR(64+COLUMN(A:L))&ROW())))

简单拆解下逻辑:

  • CHAR(64+COLUMN(A:L)) 自动生成A到L的列标,不用手动挨个列出来
  • INDIRECT(...) 拼接成每一列从第1行到当前行的完整范围
  • LOOKUP(2,1/(范围<>""),范围) 精准定位每个列范围里的最后非空值
  • TEXTJOIN("",TRUE,...) 把所有列的结果拼接起来,自动忽略空值

一次性处理所有行(Excel 365/2021以上版本)

如果用的是支持动态数组和LAMBDA的新版本Excel,还能直接生成所有行的结果,不用逐行复制公式:

=LAMBDA(rng,BYROW(rng,LAMBDA(row,TEXTJOIN("",TRUE,BYCOL(row,LAMBDA(col,LOOKUP(2,1/(INDIRECT(LEFT(ADDRESS(1,COLUMN(col),4),1)&"1:"&LEFT(ADDRESS(1,COLUMN(col),4),1)&ROW(row))<>""),INDIRECT(LEFT(ADDRESS(1,COLUMN(col),4),1)&"1:"&LEFT(ADDRESS(1,COLUMN(col),4),1)&ROW(row)))))))(A:L)

这个公式会自动遍历每一行,对每行的所有列计算最后非空值并拼接,直接输出整列的结果,超级省心!

其实你之前想到的「按行循环」「数组操作」的思路完全正确,上面的公式就是把这些思路用Excel原生函数落地了,省去了中间列的繁琐步骤。

备注:内容来源于stack exchange,提问作者8平民

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:09:11