Excel如何通过精确匹配表格内容获取对应列的表头
精确匹配Excel表格内容返回对应表头的公式方案
针对名为Foods的结构化表,需精确匹配目标单元格内容、规避部分匹配干扰、返回对应列表头的需求,可按Excel版本选择对应公式:
Excel 365 / 2021 版本(直接回车即可生效)
仅返回第一个匹配结果
=XLOOKUP(TRUE,BYCOL(Foods,LAMBDA(col,NOT(ISERROR(MATCH(F6,col,0))))),Foods[#Headers],"无匹配")
返回所有匹配的表头
=FILTER(Foods[#Headers],BYCOL(Foods,LAMBDA(col,NOT(ISERROR(MATCH(F6,col,0))))),"无匹配")
逻辑说明:用BYCOL遍历Foods的每一列,逐列判断是否存在和F6完全一致的内容,再通过函数返回对应列的表头。
旧版Excel(输入公式后需按Ctrl+Shift+Enter三键确认激活数组公式)
=IFERROR(INDEX(Foods[#Headers],MIN(IF(COUNTIF(INDEX(Foods,0,ROW(INDIRECT("1:"&COLUMNS(Foods)))),F6)>0,ROW(INDIRECT("1:"&COLUMNS(Foods))),999))),"无匹配")
如果你的Excel区域设置使用分号作为公式参数分隔符,将上述公式中的逗号替换为分号即可正常使用。
原公式错误原因
之前的写法直接对Foods整个二维区域使用MATCH函数,返回的是内容在整个区域内的一维位置序号,不是对应在表内的列号,因此计算出的MAX结果错误,才会出现返回多列表头的问题。
内容的提问来源于stack exchange,提问作者Ushay
相关产品推荐
相关产品推荐

