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

如何获取工作量矩阵中最后一个非零值对应的周数?

解决多行工时区域中获取最后完成周数的问题

你的公式报错是因为LOOKUP要求查找向量和结果向量必须是单行或单列,而B2:AM33是多行区域,不符合要求。下面提供几种可行的解决方案:

方法1:用INDEX+MAX+IF(兼容新旧Excel)

这个公式会先找出所有包含非零工时的列号,取最大的那个(也就是最后一列),再返回对应周数:

=INDEX(B1:AM1,,MAX(IF(B2:AM33>0,COLUMN(B2:AM33)-COLUMN(B1)+1)))
  • 注意:如果是Excel 2019及更早版本,输入完公式后需要按Ctrl+Shift+Enter触发数组计算;新版Excel会自动识别数组公式,直接回车即可。

方法2:用XLOOKUP(Excel 365/2021及以上)

如果你的Excel支持XLOOKUP,这个公式更直观,它会从后往前查找第一个存在非零工时的列,返回对应周数:

=XLOOKUP(TRUE,MMULT(--(B2:AM33>0),ROW(B2:B33)^0)>0,B1:AM1,,0,-1)

这里MMULT(--(B2:AM33>0),ROW(B2:B33)^0)的作用是把每列的多行数据合并成一个判断值:只要该列有任意一个单元格>0,结果就会大于0,这样就把多行区域转换成了和周数行对应的单行判断数组。

方法3:改造LOOKUP公式(适配多行区域)

你可以先把多行的非零判断转换成单行,再用LOOKUP:

=LOOKUP(2,1/(MMULT(--(B2:AM33>0),ROW(B2:B33)^0)>0),B1:AM1)

原理和方法2类似,MMULT将每列的多行条件合并为一个单行的布尔数组,这样就满足了LOOKUP对单行向量的要求,实现从后往前找最后一个符合条件的周数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:42:39