Excel如何根据单元格内指定列名对对应多列的总和执行求和运算
解决方案
前提说明
先统一单元格位置约定:
- Sheet2中输入列名组合的单元格为
B2(对应Items_chosen行、Choose Variables here列) - 输出结果的单元格为
G2(对应Result列)
如果你的实际单元格位置不同,替换公式里的B2为你实际的输入单元格即可。
公式实现
适用Excel 365/2021及以上版本(支持TEXTSPLIT函数)
在结果单元格输入以下公式即可自动计算:
=SUMPRODUCT(SUM(INDIRECT("Sheet1!"&TEXTSPLIT(B2," + ")&":"&TEXTSPLIT(B2," + "))))
公式逻辑:
TEXTSPLIT(B2," + "):把输入的列名组合按分隔符+(加号前后各一个空格)拆分,得到单独的列名数组,比如输入Veggies + Snacks + Dairy会拆分为{"Veggies","Snacks","Dairy"}- 拼接
Sheet1!和列名,生成对应列的整列引用文本,比如Sheet1!Veggies:Veggies INDIRECT函数把文本格式的引用转为实际可计算的单元格引用SUM分别计算每个选中列的总和,最后SUMPRODUCT把所有列的总和相加得到最终结果。
适用旧版Excel(无TEXTSPLIT函数)
使用FILTERXML实现拆分逻辑,公式如下:
=SUMPRODUCT(SUM(INDIRECT("Sheet1!"&FILTERXML("<t><s>"&SUBSTITUTE(B2," + ","</s><s>")&"</s></t>","//s")&":"&FILTERXML("<t><s>"&SUBSTITUTE(B2," + ","</s><s>")&"</s></t>","//s"))))
注意事项
- 输入列名组合时,列名、加号、空格的格式要和公式里的分隔符完全匹配,如果你输入时加号前后没有空格,就把公式里的
" + "改成"+"即可 - 输入的列名必须和Sheet1的表头完全一致,拼写、大小写都不能出错,否则会返回#REF!错误
内容的提问来源于stack exchange,提问作者Jackk
相关产品推荐
相关产品推荐

