求Excel公式:将A列相同值对应B列数量以‘+’合并至D列
Excel 合并相同A列对应B列内容的公式方案
适用于Excel 365/2021及以上版本
利用TEXTJOIN函数可直接实现需求,分两种场景:
场景1:合并所有相同A列对应的B列内容
在D2单元格输入以下公式,Excel 365/2021动态数组版本直接回车,稍旧版本按Ctrl+Shift+Enter执行数组运算,之后下拉填充:
=TEXTJOIN("+",TRUE,IF($A$2:$A$100=A2,$B$2:$B$100,""))
$A$2:$A$100和$B$2:$B$100替换为你实际的数据范围TRUE参数表示忽略空值
场景2:仅合并C列标识为a/b/c等的对应B列内容
调整公式加入C列的条件判断,同样按对应方式执行:
=TEXTJOIN("+",TRUE,IF(($A$2:$A$100=A2)*($C$2:$C$100={"a","b","c"}),$B$2:$B$100,""))
{"a","b","c"}可根据实际需要添加更多标识值
适用于旧版Excel(无TEXTJOIN函数)
方法1:辅助列+PHONETIC函数(仅支持文本型B列内容)
- 新增辅助列E,E2输入公式并下拉:
=IF(A2=A1,E1&"+"&B2,B2) - D2输入公式并下拉,仅显示每个A列分组最后一行的合并结果:
=IF(COUNTIF(A2:A$100,A2)=1,E2,"")
方法2:自定义VBA函数
- 按
Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:Function JoinSameA(rngA As Range, rngB As Range, rngC As Range, key As Variant, Optional delimiter As String = "+") As String Dim i As Long Dim result As String result = "" For i = 1 To rngA.Rows.Count ' 可根据需求调整C列的标识判断条件 If rngA.Cells(i, 1).Value = key And (rngC.Cells(i, 1).Value = "a" Or rngC.Cells(i, 1).Value = "b" Or rngC.Cells(i, 1).Value = "c") Then If result <> "" Then result = result & delimiter result = result & rngB.Cells(i, 1).Value End If Next i JoinSameA = result End Function - 返回Excel,D2输入公式并下拉:
=JoinSameA($A$2:$A$100,$B$2:$B$100,$C$2:$C$100,A2)
内容的提问来源于stack exchange,提问作者August's Leo
相关产品推荐
相关产品推荐

