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

如何修改LOOKUP公式获取Excel列中首个非0值?

问题场景

以下是数据表格:

AB
10500
20
30
4500
5400
60
7700
8300
9

需求:在单元格B1中显示A列里首个不为0的值(示例中应为500)。

尝试的公式(未成功):

B1 =LOOKUP(2,1/(A1:A8<>0),A1:A8)

问题原因

你的LOOKUP公式之所以返回错误结果,是因为LOOKUP函数的特性:它会在查找数组中找到最后一个小于等于查找值(这里是2)的匹配项。1/(A1:A8<>0)生成的数组中,非0值对应位置为1,0值对应位置为#DIV/0!,LOOKUP会忽略错误值,最终返回最后一个1对应的A列值(即300),而非第一个。


正确解决方案

方案1:INDEX + MATCH(兼容所有Excel版本)

这是通用度最高的方法,适用于所有Excel版本:

=INDEX(A1:A8, MATCH(TRUE, A1:A8<>0, 0))
  • A1:A8<>0生成布尔数组,非0值为TRUE,0值为FALSE
  • MATCH(TRUE, ..., 0)定位第一个TRUE的位置(示例中为第4行)
  • INDEX(A1:A8, 位置)返回该位置对应的A列值(500)

注:若使用旧版Excel(非365/2021),输入公式后需按Ctrl+Shift+Enter完成数组公式的确认。

方案2:XLOOKUP(适用于Excel 365/2021及以上版本)

如果你的Excel支持XLOOKUP函数,可使用更简洁的写法:

=XLOOKUP(TRUE, A1:A8<>0, A1:A8, , , 1)
  • 最后一个参数1表示从前往后搜索,直接返回第一个匹配的非0值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:17