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

Excel公式求助:查找对应编码首个非空值的列标题日期

解决Excel提取首个非空值对应日期的问题

问题背景

原工作表Set Plan的表格结构如下:

Jan-23Feb-23Mar-23Apr-23
ABC1
DEF1
GHI11

在另一工作表中,编码ABC、DEF、GHI垂直排列(假设放在J列,如J925为第一个编码),需要编写公式获取每个编码对应行首个非空值的列标题日期,输出格式为月/年(如2/2023)。

之前尝试的公式未生效:

=IFERROR(INDEX('Set Plan'!$P$3:$AY$3, XLOOKUP(1, ('Set Plan'!$P4:$AY282 > 0) * ('Set Plan'!$C$4:$C$282 = $J925), 'Set Plan'!$P$3:$AY$3, "", 0, 1)), "No Match Found")

问题原因

这个公式的核心问题是:

  • XLOOKUP的查找数组是多行列的布尔运算结果,返回数组却是单行的日期标题,二者维度不匹配
  • 没有先定位到目标编码对应的行,导致查找范围覆盖了多行,逻辑混乱

解决方案

方案1:适配Excel 365/2021(支持XLOOKUP)

直接在目标单元格输入以下公式,下拉填充即可:

=TEXT(INDEX('Set Plan'!$P$3:$AY$3,MATCH(TRUE,INDEX('Set Plan'!$P$4:$AY$282,MATCH($J925,'Set Plan'!$C$4:$C$282,0),0)<>"",0)),"m/yyyy")

拆解逻辑:

  1. MATCH($J925,'Set Plan'!$C$4:$C$282,0):找到当前编码在Set Plan表C列的行号
  2. INDEX('Set Plan'!$P$4:$AY$282,...):提取该行从P到AY列的所有数据
  3. MATCH(TRUE,...<>""...):定位该行里第一个非空值的列位置
  4. INDEX('Set Plan'!$P$3:$AY$3,...):取出对应位置的日期标题
  5. TEXT(..., "m/yyyy"):把日期转成月/年的格式

方案2:兼容旧版Excel(无XLOOKUP)

如果用的是旧版Excel,换用OFFSET替代行提取逻辑:

=TEXT(INDEX('Set Plan'!$P$3:$AY$3,MATCH(TRUE,OFFSET('Set Plan'!$P$3,MATCH($J925,'Set Plan'!$C$4:$C$282,0),0,1,COLUMNS('Set Plan'!$P$3:$AY$3))<>"",0)),"m/yyyy")

加无匹配提示(可选)

如果需要处理编码不存在的情况,套上IFERROR:

=IFERROR(TEXT(INDEX('Set Plan'!$P$3:$AY$3,MATCH(TRUE,INDEX('Set Plan'!$P$4:$AY$282,MATCH($J925,'Set Plan'!$C$4:$C$282,0),0)<>"",0)),"m/yyyy"),"No Match Found")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:03:33