Excel 2010中SUMIF、INDEX MATCH函数应用问题求助
搞定Excel 2010动态匹配列求和的问题
嘿,我明白你现在的困扰——要根据Table_Encounters里的难度值,自动去Table_Players找对应列,然后对O3:O10区域求和对吧?Excel 2010虽然没有后来版本的XLOOKUP这类新函数,但用INDEX+MATCH组合完全能解决这个问题,我给你一步步说清楚:
直接可用的公式(以G3单元格为例)
在G3里输入这个公式就行:
=SUM(INDEX(Table_Players, 3, MATCH(F3, Table_Players[#Headers], 0)):INDEX(Table_Players, 10, MATCH(F3, Table_Players[#Headers], 0)))
为啥这么写?我给你拆解开看
MATCH(F3, Table_Players[#Headers], 0):这部分会帮你找到F3里的难度(比如"Hard")在Table_Players表头里的位置,返回对应的列号——比如如果Hard列是第5列,就返回5。- 两个
INDEX函数:第一个INDEX定位到Table_Players第3行、对应难度列的单元格(也就是你要求和的起点O3),第二个INDEX定位到第10行的对应单元格(终点O10)。 SUM包裹起来:把这两个点之间的区域全部加起来,就是你要的结果啦。
要是想对整列求和?有更简单的写法
如果你不需要限定O3:O10,而是想直接对对应难度的整列求和,用这个更简洁的公式:
=SUM(INDEX(Table_Players, , MATCH(F3, Table_Players[#Headers], 0)))
要是公式还出错?检查这几点
- 先确认
Table_Players的表头名称和Table_Encounters里的难度值完全一致!大小写、空格都不能差,比如"Hard"和" hard"会被Excel当成两个不同的东西。 - 看看
Table_Players的表格范围是不是包含了O3:O10,别不小心把表格的边界拉错了。 - 确保你用的是Excel表格的结构化引用,
Table_Players[#Headers]这种写法是对的,别手动输单元格范围搞混了。
内容的提问来源于stack exchange,提问作者Damiano




