Excel重复表头下非空值匹配:已解决B列,求C、D列公式
解决方案
根据你的需求——匹配指定表头并返回对应非空值,以下是针对C9:C12和D9:D12的公式,分两种常见场景说明:
场景1:表头在固定行(如第1行),记录行与提取行一一对应
假设固定表头位于第1行($B$1:$H$1),B列提取"表头B"的非空值,C列需提取"表头C",D列提取"表头D",且B9对应第2行、B10对应第3行以此类推:
C9:C12公式(可直接下拉)
=IFERROR(INDEX(B2:H2,MATCH(TRUE,($B$1:$H$1="表头C")*(B2:H2<>""),0)),"")
D9:D12公式(可直接下拉)
=IFERROR(INDEX(B2:H2,MATCH(TRUE,($B$1:$H$1="表头D")*(B2:H2<>""),0)),"")
公式说明:
($B$1:$H$1="表头C"):匹配第1行中所有标注为"表头C"的列*(B2:H2<>""):同时筛选出该列对应记录行的非空值MATCH(TRUE,...0):定位第一个满足双重条件的列位置INDEX(B2:H2,...):返回该位置的具体值IFERROR(..., ""):无符合条件的值时返回空单元格
场景2:表头与值在同一记录行(如第2行内重复出现表头和对应值)
如果记录行(如第2行)内同时包含重复表头和对应值(例如结构为[表头B, 值B, 表头B, 空, 表头C, 值C]),需提取指定表头右侧的非空值:
C9:C12公式(可直接下拉)
=IFERROR(INDEX(B2:H2,AGGREGATE(15,6,COLUMN(B2:H2)/(B2:H2="表头C")/(OFFSET(B2:H2,0,1)<>""),1)+1),"")
D9:D12公式(可直接下拉)
=IFERROR(INDEX(B2:H2,AGGREGATE(15,6,COLUMN(B2:H2)/(B2:H2="表头D")/(OFFSET(B2:H2,0,1)<>""),1)+1),"")
公式说明:
B2:H2="表头C":定位当前记录行内所有"表头C"的位置OFFSET(B2:H2,0,1)<>"":检查表头右侧紧邻单元格(值所在列)是否非空COLUMN(...)+1:将表头列号转换为对应值的列号AGGREGATE(15,6,...1):筛选出第一个符合条件的列号IFERROR:处理无有效值的情况,返回空单元格
内容的提问来源于stack exchange,提问作者Well Wasted Time
相关产品推荐
相关产品推荐

