You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Excel相同ICCID行合并、Country拼接及O/P/Q列求和方案

解决方案

方案一:使用Excel内置函数实现(无需VBA)

适合不熟悉VBA的用户,操作步骤如下:

  1. 提取唯一ICCID:在空白列(如R列)的R2单元格输入公式:=UNIQUE(B:B),回车后自动生成所有不重复的ICCID列表。
  2. 拼接Country内容:在S2单元格输入公式:=TEXTJOIN(", ", TRUE, FILTER(M:M, B:B=R2)),下拉填充至所有唯一ICCID行,该公式会将对应ICCID的所有Country用「逗号+空格」拼接。
  3. 求和O列数值:在T2单元格输入:=SUMIFS(O:O, B:B=R2),下拉填充。
  4. 求和P列数值:在U2单元格输入:=SUMIFS(P:P, B:B=R2),下拉填充。
  5. 求和Q列数值:在V2单元格输入:=SUMIFS(Q:Q, B:B=R2),下拉填充。
  6. 完成后,将R-V列的结果复制粘贴为值,再删除原数据列(B、M、O、P、Q等)即可整理成目标格式。

方案二:使用VBA脚本批量处理(高效适配大量数据)

若数据量较大,函数公式易卡顿,可使用VBA脚本快速处理:

  1. 按Alt + F11打开VBA编辑器,右键点击当前工作簿,选择「插入」→「模块」。
  2. 粘贴以下代码:
Sub MergeICCIDRows()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long, j As Long
    Dim currentICCID As String
    Dim countryStr As String
    Dim sumO As Double, sumP As Double, sumQ As Double
    
    Set ws = ActiveSheet ' 可改为具体工作表名,如Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    
    ' 按B列排序,确保相同ICCID连续排列
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ws.Sort
        .SetRange ws.Range("A1:Q" & lastRow)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    i = 2 ' 从第2行开始(假设第1行为表头)
    Do While i <= lastRow
        currentICCID = ws.Cells(i, "B").Value
        countryStr = ws.Cells(i, "M").Value
        sumO = ws.Cells(i, "O").Value
        sumP = ws.Cells(i, "P").Value
        sumQ = ws.Cells(i, "Q").Value
        
        j = i + 1
        ' 遍历后续相同ICCID的行
        Do While j <= lastRow And ws.Cells(j, "B").Value = currentICCID
            countryStr = countryStr & ", " & ws.Cells(j, "M").Value
            sumO = sumO + ws.Cells(j, "O").Value
            sumP = sumP + ws.Cells(j, "P").Value
            sumQ = sumQ + ws.Cells(j, "Q").Value
            ' 删除重复行
            ws.Rows(j).Delete
            lastRow = lastRow - 1
        Loop
        
        ' 更新当前行的合并后内容
        ws.Cells(i, "M").Value = countryStr
        ws.Cells(i, "O").Value = sumO
        ws.Cells(i, "P").Value = sumP
        ws.Cells(i, "Q").Value = sumQ
        
        i = i + 1
    Loop
End Sub
  1. 返回Excel界面,按Alt + F8,选择MergeICCIDRows宏执行即可。

注意:执行前请备份数据,避免意外修改无法恢复。

内容的提问来源于stack exchange,提问作者Benjamin Perry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:55:15