Excel如何对列名含指定公共字符的所有列进行求和计算
按列名公共片段对多列数值求和的实现方案
Python Pandas 方案(适配大数据量批量处理场景)
核心思路是先通过列名字符串匹配筛选出目标列,再执行求和逻辑:
- 列筛选:通过
df.columns.str.contains('目标公共片段')即可批量匹配所有列名包含指定片段的列,例如要匹配所有带str1的列,直接传入匹配关键词'str1'即可。 - 求和计算:对筛选出的列子集调用sum方法,传入
axis=1可计算每行的合计值,传入axis=0可计算所有行的列总合计。
可直接复用的代码示例:
import pandas as pd # 构造和示例结构一致的测试数据 df = pd.DataFrame({ 'str1a': [1, 2, 3, 4], 'str1b': [5, 6, 7, 8], 'str2a': [9, 10, 11, 12], 'str2b': [13, 14, 15, 16] }) # 计算所有含str1片段的列的行和,结果存入新列str1_total df['str1_total'] = df.loc[:, df.columns.str.contains('str1')].sum(axis=1) # 计算所有含str2片段的列的行和,结果存入新列str2_total df['str2_total'] = df.loc[:, df.columns.str.contains('str2')].sum(axis=1)
如果需要避免模糊匹配带来的误命中(比如匹配str1时误命中str11、xstr1x这类不需要的列),可以换成正则精准匹配,例如df.columns.str.match(r'^str1[a-z]$')就能精准匹配str1后接单个小写字母的列名格式。
Excel 方案(适配小数据量手动操作场景)
用带通配符的SUMIF函数即可实现,无需手动点选每一列:
- 若公共片段在列名开头,结果单元格输入公式:
=SUMIF($1:$1,"str1*",2:2),下拉即可批量计算所有行的合计值。 - 若公共片段在列名任意位置,将匹配规则调整为
"*str1*"即可,公式修改为=SUMIF($1:$1,"*str1*",2:2)。
公式参数说明:第一参数
$1:$1为锁定的表头行范围,第二参数为通配符匹配规则,第三参数2:2为当前需要求和的行范围,下拉时行号会自动对应更新。
内容的提问来源于stack exchange,提问作者batardavelo
相关产品推荐
相关产品推荐

