Excel多值匹配求和:单个单元格多B ID对应A ID求B Value总和
解决多B ID对应A ID的分组求和问题
针对A ID对应多个空格分隔B ID、需匹配B Value求和的场景,以下是三种实用解决方案,覆盖不同Excel版本和数据量需求:
一、Excel函数法(适用于Excel 365/2021及以上版本)
利用TEXTSPLIT拆分空格分隔的B ID,结合SUMIF批量求和,直接在目标单元格输入公式即可:
假设右侧A ID对应表为Sheet2!A:B(A列存A ID,B列存空格分隔的B ID),左侧表B ID和B Value在Sheet1!A:B,待填充的Grouped Value列在Sheet1!C:
- 选中
Sheet1!C2(首个待填充单元格) - 输入公式:
=SUM(SUMIF(Sheet1!A:A, TEXTSPLIT(VLOOKUP(A2, Sheet2!A:B, 2, FALSE), " "), Sheet1!B:B))
- 下拉填充公式至整列
旧版本Excel兼容方案(无TEXTSPLIT)
用FILTERXML替代TEXTSPLIT拆分字符串,公式改为:
=SUM(SUMIF(Sheet1!A:A, FILTERXML("<t><s>"&SUBSTITUTE(VLOOKUP(A2, Sheet2!A:B, 2, FALSE)," ","</s><s>")&"</s></t>","//s"), Sheet1!B:B))
二、Power Query法(适用于大数据量,高效稳定)
数据量极大时函数易卡顿,Power Query批量处理更顺畅:
- 选中右侧A ID对应表的数据区域,点击数据选项卡 → 从表格/区域,加载到Power Query编辑器
- 在编辑器中选中B ID列,点击转换选项卡 → 拆分列 → 按分隔符,选择空格并勾选拆分为行
- 关闭编辑器,选择仅创建连接(无需加载到工作表)
- 选中左侧表数据区域,同样加载到Power Query编辑器
- 点击合并查询 → 合并为新查询,用左侧表的B ID列和右侧拆分后的B ID列匹配,合并类型选左外部
- 展开合并后的列,仅保留A ID列
- 添加分组依据:点击转换 → 分组依据,分组列为A ID,新列名设为
Grouped Value,操作选求和,目标列选B Value - 将处理后的查询加载回原工作表,替换或追加到左侧表的Grouped Value列
三、VBA自定义函数法(灵活通用,适配全版本)
编写自定义函数,直接在单元格调用:
- 按
Alt+F11打开VBA编辑器 - 右键工作簿 → 插入 → 模块,粘贴以下代码:
Function GetGroupedSum(aID As String, aRange As Range, bRange As Range) As Double Dim bIDs As Variant Dim sumVal As Double Dim i As Integer ' 查找对应A ID的B ID字符串 Dim bIDStr As String bIDStr = Application.VLookup(aID, aRange, 2, False) ' 拆分B ID数组 bIDs = Split(bIDStr, " ") ' 遍历求和 sumVal = 0 For i = LBound(bIDs) To UBound(bIDs) sumVal = sumVal + Application.SumIf(bRange.Columns(1), bIDs(i), bRange.Columns(2)) Next i GetGroupedSum = sumVal End Function
- 返回Excel,在
Sheet1!C2输入公式:
=GetGroupedSum(A2, Sheet2!A:B, Sheet1!A:B)
- 下拉填充即可
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

