Excel公式求助:查找日期返回列标题时出现#REF!错误
问题分析与解决方法
原公式逻辑拆解
你之前用的公式:
=INDEX($C$9:$Q$9,, SUMPRODUCT(($C$10:$Q$20=C2)* (COLUMN($C$9:$Q$9)-COLUMN($B$2))))
各部分作用:
($C$10:$Q$20=C2):生成布尔数组,找到区域内等于C2日期的单元格,匹配位置为1,其余为0COLUMN($C$9:$Q$9):获取C到Q列的绝对列号(3到17)COLUMN($B$2):获取B列的绝对列号(2),用它做基准,计算出C9:Q9区域内的相对列号(3-2=1,17-2=15,对应区域的第1到15列)- SUMPRODUCT将匹配位置的相对列号相加,得到目标日期所在的相对列位置,INDEX据此返回C9:Q9中对应列的标题
错误原因
你把公式改成C4时,错误地将COLUMN($B$2)换成了COLUMN($B$4)——虽然B4的列号还是2,但如果实际操作中误选了其他列,或者当C4的日期匹配位置计算后,得到的相对列号超出了C9:Q9的列数(C到Q共15列),就会导致INDEX的列参数无效,返回#REF!。本质是你误解了这个基准列号的作用:它是固定用来计算C9:Q9区域相对列位置的,不能随查找单元格(C2/C4)改变。
修正后的公式
方法1:固定基准列号
沿用你原来的SUMPRODUCT写法,把基准列号固定为B列(不管查找的是C2还是C4):
=INDEX($C$9:$Q$9,, SUMPRODUCT(($C$10:$Q$20=C4)*(COLUMN($C$9:$Q$9)-COLUMN($B$1))))
方法2:更直观的列号计算
直接计算匹配单元格的绝对列号,再转换成C9:Q9内的相对列号,逻辑更清晰:
=INDEX($C$9:$Q$9,,SUMPRODUCT(($C$10:$Q$20=C4)*COLUMN($C$10:$Q$20))-COLUMN($C$9)+1)
方法3:用XLOOKUP简化(适用于Excel 365/2021及以上版本)
如果你的Excel支持XLOOKUP,直接用这个更简洁的公式:
=XLOOKUP(C4,$C$10:$Q$20,$C$9:$Q$9,"未找到",0)
内容的提问来源于stack exchange,提问作者JenMcClary
相关产品推荐
相关产品推荐

