如何修改Excel公式以获取演讲者首次(最左侧)演讲的最新日期
如何修改Excel公式以获取演讲者首次(最左侧)演讲的最新日期
嗨,我明白你的需求了——你现在的公式能找到演讲者**最后一次(最右侧)演讲的日期,但换成MIN后失效,想调整成找首次在最左侧(也就是最新年份)**出现的演讲日期对吧?
先说说你原来公式为什么换成MIN不行:当单元格内容和D13不匹配时,($B$3:$G$6=D13)会返回FALSE,乘以列号后结果就是0。用MIN的时候,这些0会被算进去,最终得到的最小值是0,自然没法返回正确的日期了。
给你两个可行的修改方案,按需选择:
方案一:基于你原有公式调整(适配新旧Excel版本)
把公式改成这样:
=INDEX($B$1:$G$1,SUMPRODUCT(MIN(IF($B$3:$G$6=D13,COLUMN($B$3:$G$6),COLUMNS($B$3:$G$6)+1)))-COLUMN($B$1)+1)
逻辑说明:
- 用
IF函数替换了原来的直接相乘:匹配D13的单元格返回对应的列号,不匹配的返回一个比最大列号还大的数(比如你的数据到G列,就返回7+1=8) - 这样
MIN就只会从匹配的列号里取最小值(也就是最左侧的列) - 注意:在旧版Excel里输入完公式需要按
Ctrl+Shift+Enter触发数组计算,新版Excel直接回车就行
方案二:用AGGREGATE函数更简洁(推荐)
如果你的Excel支持AGGREGATE函数(2010及以后版本),可以用这个更简洁的公式:
=INDEX($B$1:$G$1,AGGREGATE(15,6,COLUMN($B$3:$G$6)/($B$3:$G$6=D13),1)-COLUMN($B$1)+1)
逻辑说明:
COLUMN($B$3:$G$6)/($B$3:$G$6=D13):匹配的单元格会得到列号,不匹配的会返回#DIV/0!错误AGGREGATE(15,6,...):15代表调用SMALL函数取最小值,6代表忽略错误值,最后一个1表示取第1小的结果(也就是最左侧的匹配列号)- 后续的
-COLUMN($B$1)+1是把绝对列号转换成$B$1:$G$1区域内的相对位置,让INDEX能正确定位日期
你可以把D13换成你要查询的演讲者名字,测试下这两个公式,应该就能得到你想要的最左侧(最新)的演讲日期了。
备注:内容来源于stack exchange,提问作者depperm
相关产品推荐
相关产品推荐

