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

Excel公式需求:根据指定国家和代码获取DATA表最后非空年份列标题

解决Excel中查找对应行最近有数据年份的问题

我来帮你搞定这个需求——要在「DATA AVAILABILITY」工作表里,根据E2的国家和A3的代码,从「DATA」表找到匹配行,返回该行有数据的最近年份表头对吧?下面分两种Excel版本给你对应的公式,还会解释每个部分的作用,方便你理解调整。


适用于Excel 365/2021(动态数组版本)

这个版本用LET函数把公式拆成变量,可读性更强,也不用手动触发数组输入:

=LET(
    targetRow, FILTER(DATA!$A:$J, (DATA!$A:$A=E2)*(DATA!$B:$B=A3)),
    yearCols, INDEX(targetRow, 0, SEQUENCE(7,,4)),
    nonBlankYears, FILTER(yearCols, yearCols<>""),
    maxYear, MAX(nonBlankYears),
    INDEX(DATA!$1:$1, MATCH(maxYear, DATA!$1:$1, 0))
)

公式拆解:

  • targetRow:用FILTER精准定位「DATA」表中Country等于E2且Code等于A3的那一行数据
  • yearCols:提取该行里2000到2006的年份列(对应第4到第10列,用SEQUENCE生成列序号更灵活)
  • nonBlankYears:过滤掉年份列里的空白单元格,只保留有数据的年份值
  • maxYear:从有效年份里取最大值,也就是我们要找的最近年份
  • 最后用INDEX+MATCH组合,根据最大年份值找到对应的表头标题

适用于旧版Excel(无动态数组功能)

如果你的Excel版本不支持LET和FILTER,可以用这个数组公式,记得输入完后按Ctrl+Shift+Enter确认(不是普通回车):

=INDEX(DATA!$1:$1, MAX(IF((DATA!$A:$A=E2)*(DATA!$B:$B=A3)*(DATA!$D:$J<>""), COLUMN(DATA!$D:$J), 0)))

公式拆解:

  • (DATA!$A:$A=E2)*(DATA!$B:$B=A3):先锁定匹配国家和代码的行
  • *(DATA!$D:$J<>""):再筛选出该行里有数据的年份列
  • COLUMN(DATA!$D:$J):返回这些有效列的列号
  • MAX(...):取最大的列号,对应最近的年份列
  • INDEX(DATA!$1:$1, ...):根据列号提取表头的年份标题

额外优化:错误处理

如果匹配到的行所有年份都没有数据,公式会返回错误值。你可以用IFERROR包裹公式,返回友好提示:

比如新版公式改成:

=IFERROR(LET(
    targetRow, FILTER(DATA!$A:$J, (DATA!$A:$A=E2)*(DATA!$B:$B=A3)),
    yearCols, INDEX(targetRow, 0, SEQUENCE(7,,4)),
    nonBlankYears, FILTER(yearCols, yearCols<>""),
    maxYear, MAX(nonBlankYears),
    INDEX(DATA!$1:$1, MATCH(maxYear, DATA!$1:$1, 0))
), "无可用数据")

旧版公式改成:

=IFERROR(INDEX(DATA!$1:$1, MAX(IF((DATA!$A:$A=E2)*(DATA!$B:$B=A3)*(DATA!$D:$J<>""), COLUMN(DATA!$D:$J), 0))), "无可用数据")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:36:01