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

Excel按行值定位后查找行内首次/末次dev对应的列名(日期)

嘿,我来帮你搞定这两个Excel查询需求!针对你提到的场景——根据输入的Name字段值,返回对应行中首个/末次出现"dev"的日期列名,我整理了两个实用的公式方案:

1. 查找首个出现"dev"的日期列名

假设你的表格结构是:

  • Name字段在A列(比如A2是project1,A3是project2)
  • 日期列的表头在第1行(B1到Z1是日期字符串,比如1/8/2018、1/15/2018)
  • 数据区域是B列到Z列(对应每行的状态值,比如"dev")

固定Name查询(比如直接查project1)

用这个公式:

=INDEX($B$1:$Z$1,MATCH("dev",INDEX($B:$Z,MATCH("project1",$A:$A,0),0),0))

公式拆解:

  1. MATCH("project1",$A:$A,0):找到project1所在的行号
  2. INDEX($B:$Z,行号,0):提取该行从B到Z的所有数据
  3. MATCH("dev",...,0):在提取的行数据中找到第一个"dev"的位置
  4. INDEX($B$1:$Z$1,...):根据位置返回对应的日期表头

动态输入Name查询(比如在D1单元格输入要查询的Name)

把公式改成动态引用并增加错误处理:

=IFERROR(INDEX($B$1:$Z$1,MATCH("dev",INDEX($B:$Z,MATCH(D1,$A:$A,0),0),0)),"无匹配结果")

加IFERROR是为了避免找不到目标Name或该行没有"dev"时出现错误值,会返回自定义提示。

2. 查找末次出现"dev"的日期列名

同样基于上面的表格结构,用LOOKUP函数可以轻松定位最后一个匹配项:

固定Name查询(直接查project1)

公式:

=LOOKUP(2,1/(INDEX($B:$Z,MATCH("project1",$A:$A,0),0)="dev"),$B$1:$Z$1)

公式拆解:

  1. INDEX($B:$Z,MATCH("project1",$A:$A,0),0)="dev":生成一个由TRUE/FALSE组成的数组,对应该行每个单元格是否为"dev"
  2. 1/(...):把TRUE转成1,FALSE转成#DIV/0!错误值
  3. LOOKUP(2,1/..., $B$1:$Z$1):LOOKUP会忽略错误值,找到最后一个等于1的位置,返回对应的日期表头

动态输入Name查询

改成动态引用并增加错误处理:

=IFERROR(LOOKUP(2,1/(INDEX($B:$Z,MATCH(D1,$A:$A,0),0)="dev"),$B$1:$Z$1),"无匹配结果")

示例验证

  • 输入Name为project1时,首个结果返回1/8/2018,末次结果返回1/15/2018
  • 输入Name为project2时,首个结果返回1/15/2018(符合你给出的示例)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:55:23