Excel表格自动扩展问题:UFC赛事预测模型跨表数据提取
UFC拳手赛事数据提取与自动行调整方案
核心需求
提取指定拳手在Fighter 1或Fighter 2列的所有赛事数据,让表格根据匹配结果自动调整行数,合并数据用于后续分析。
方案1:Excel 365/2021 动态数组方案(推荐)
利用动态数组的自动溢出特性,无需手动设置行数限制,直接返回所有匹配结果:
1. 提取拳手作为Fighter1的所有赛事数据
=FILTER(Fights, Fights[Fighter 1]=$B$2)
该公式会自动返回所有Fighter 1列匹配指定拳手的行,结果自动向下溢出,无需拖拽填充。
2. 提取拳手作为Fighter2的所有赛事数据
=FILTER(Fights, Fights[Fighter 2]=$B$2)
3. 合并两组结果
用VSTACK将两个筛选结果垂直合并,得到该拳手参与的所有赛事数据:
=VSTACK( IFERROR(FILTER(Fights, Fights[Fighter 1]=$B$2), ""), IFERROR(FILTER(Fights, Fights[Fighter 2]=$B$2), "") )
添加IFERROR是为了避免其中一组无匹配结果时出现错误值。
方案2:旧版Excel(无动态数组)适配方案
如果使用不支持动态数组的旧版Excel,可通过动态计算匹配行数+扩展INDEX/AGGREGATE公式实现:
1. 计算总匹配行数
在任意单元格(比如A12)输入公式,自动统计该拳手在两列的总出现次数:
=COUNTIF(Fights[Fighter 1],$B$2)+COUNTIF(Fights[Fighter 2],$B$2)
2. 动态提取双列数据
在目标单元格(比如C14)输入以下公式,拖拽填充至足够多的行(超过最大可能匹配数即可),公式会自动在无数据时返回空值:
=IF( ROWS($C$14:C14)<=COUNTIF(Fights[Fighter 1],$B$2), INDEX(Fights[Fighter 2],AGGREGATE(15,3,(Fights[Fighter 1]=$B$2)/(Fights[Fighter 1]=$B$2)*(ROW(Fights[Fighter 1])-ROW(Fights[[#Headers],[Fighter 1]])),ROWS($C$14:C14))), IF( ROWS($C$14:C14)<=COUNTIF(Fights[Fighter 1],$B$2)+COUNTIF(Fights[Fighter 2],$B$2), INDEX(Fights[Fighter 1],AGGREGATE(15,3,(Fights[Fighter 2]=$B$2)/(Fights[Fighter 2]=$B$2)*(ROW(Fights[Fighter 2])-ROW(Fights[[#Headers],[Fighter 2]])),ROWS($C$14:C14)-COUNTIF(Fights[Fighter 1],$B$2))), "" ) )
该公式会先提取Fighter 1列匹配的对应Fighter 2数据,再提取Fighter 2列匹配的对应Fighter 1数据,超出总匹配行数后返回空值。
内容的提问来源于stack exchange,提问作者Vicente Parra
相关产品推荐
相关产品推荐

