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

Excel从下往上查找空单元格并填充上方首个非空值求助

解决方案

1. 填充A列空值(从下往上匹配上方首个非空值)

要实现A1:A6区域中空单元格从下往上匹配上方最近的非空值,可使用BYROW+XLOOKUP组合公式,遍历每个单元格,为空时反向查找上方非空值:

=BYROW(A1:A6, LAMBDA(cell,
  IF(cell<>"",
    cell,
    XLOOKUP(TRUE, A1:INDEX(A:A, ROW()-1)<>"", A1:INDEX(A:A, ROW()-1),, 0, -1)
  )
))
  • 参数说明:XLOOKUP的最后一个参数-1指定反向查找,确保从当前单元格的上一行开始,从下往上找到第一个非空值。

2. 结合FILTER输出到D1:E6

假设你需要将填充后的A列数据与对应B列数据(可替换为你的目标列)通过FILTER处理后输出到D:E区域,分两种情况:

情况1:无额外筛选条件,仅展示填充后的数据

直接用HSTACK将填充后的A列与目标列合并,输入到D1单元格:

=HSTACK(
  BYROW(A1:A6, LAMBDA(cell,
    IF(cell<>"",
      cell,
      XLOOKUP(TRUE, A1:INDEX(A:A, ROW()-1)<>"", A1:INDEX(A:A, ROW()-1),, 0, -1)
    )
  )),
  B1:B6
)

该公式会自动将填充后的A列放入D列,B列数据放入E列,刚好覆盖D1:E6区域。

情况2:需要筛选特定行

比如只保留填充后A列包含某关键词的行,在FILTER中添加筛选条件即可:

=FILTER(
  HSTACK(
    BYROW(A1:A6, LAMBDA(cell,
      IF(cell<>"",
        cell,
        XLOOKUP(TRUE, A1:INDEX(A:A, ROW()-1)<>"", A1:INDEX(A:A, ROW()-1),, 0, -1)
      )
    )),
    B1:B6
  ),
  BYROW(A1:A6, LAMBDA(cell,
    IF(cell<>"",
      cell,
      XLOOKUP(TRUE, A1:INDEX(A:A, ROW()-1)<>"", A1:INDEX(A:A, ROW()-1),, 0, -1)
    )
  ))="目标关键词"
)

兼容性说明

上述公式仅支持Office 365/Excel 2021及以上版本,若使用旧版Excel,可改用数组公式实现反向填充,但效率会稍低。

内容的提问来源于stack exchange,提问作者M3gan3_sama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:57:16