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

Excel查找指定行最后一个非零值对应列号的公式问题求解

问题原因及解决方案

公式返回结果不符合预期的原因

  • 你使用的两个公式返回的45是工作表全局绝对列号:O列的全局列号为15,BA列的全局列号为53,45完全在O~BA的列号范围内,本身计算逻辑没有问题。
  • 你提到的39是O~BA列的总宽度,不是该范围的最大全局列号,你预期得到的31是以O列为第1位的相对列号,只需要对现有公式结果做偏移修正即可。
  • 数值验证:公式返回的全局列号45减去O列之前的14列,刚好等于你提到的正确相对列号31,验证了现有公式计算的正确性。

修正后的列号查询公式

如果需要得到以O列为第1位的相对列号,使用以下公式即可:

数组公式版本(Excel 365/2021及以上可直接回车执行,旧版本需按Ctrl+Shift+Enter触发数组计算)

=MAX((O8:BA8<>0)*(COLUMN(O8:BA8))) - COLUMN(O8) + 1

兼容旧版本的SUMPRODUCT版本(无需数组回车)

=SUMPRODUCT(MAX((O8:BA8<>0)*COLUMN(O8:BA8))) - COLUMN(O8) + 1

直接查询最后登记工时日期的简化方案

你最终需求是获取最后一次登记工时对应的日期,无需额外转换列号,假设O7到BA7行是对应列的日期表头,直接使用以下兼容性更强的公式即可:
=LOOKUP(1,0/(O8:BA8>0),O$7:BA$7)
公式逻辑说明:先通过O8:BA8>0筛选出所有有工时登记的单元格,再通过LOOKUP忽略错误值的特性,匹配最后一个符合条件的单元格,直接返回对应列的日期值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:06:06