Excel如何用单单元格公式返回首个含非空值列的表头
适配结构化引用的单单元格公式方案
Excel 365 / 2021 及以上版本(无需数组回车)
直接使用支持动态数组的函数实现,逻辑简单易维护,表格增减列自动适配:
=XLOOKUP(TRUE, BYCOL(INDEX(Table1[#Data],0,3):INDEX(Table1[#Data],0,COLUMNS(Table1)), LAMBDA(col, COUNTA(col)>0)), INDEX(Table1[#Headers],0,3):INDEX(Table1[#Headers],0,COLUMNS(Table1)), "error")
逻辑说明:用BYCOL遍历排除前两列后的所有数据列,逐列判断是否存在非空值,输出一维的判断结果数组,再用XLOOKUP匹配第一个返回TRUE的列,返回对应表头。
兼容旧版Excel版本
基于你现有的SUMPRODUCT逻辑改造,适配结构化引用:
=IFERROR(INDEX(INDEX(Table1[#Headers],0,3):INDEX(Table1[#Headers],0,COLUMNS(Table1)),SUMPRODUCT(MIN(IF((INDEX(Table1[#Data],0,3):INDEX(Table1[#Data],0,COLUMNS(Table1))<>0)*(INDEX(Table1[#Data],0,3):INDEX(Table1[#Data],0,COLUMNS(Table1))<>"")*(COLUMN(INDEX(Table1[#Data],0,3):INDEX(Table1[#Data],0,COLUMNS(Table1))))>0,(COLUMN(INDEX(Table1[#Data],0,3):INDEX(Table1[#Data],0,COLUMNS(Table1))))))-COLUMN(INDEX(Table1[#Data],0,2))), "error")
注意:旧版Excel输入完公式后需要按Ctrl+Shift+Enter组合键以数组公式形式生效。
调整说明
- 把公式中的
Table1替换为你的动态表格实际名称即可 - 若需排除的前N列数量变动,将公式中
INDEX(...,0,3)的3改为N+1即可(当前排除前2列,所以从第3列开始匹配) - 公式默认同时跳过空值和0值,若需保留0值作为有效非空,删除判断条件里的
*(INDEX(...)<>"")部分即可
内容的提问来源于stack exchange,提问作者Sassbearilla
相关产品推荐
相关产品推荐

