Excel同一客户订单内重复型号的识别与处理方案咨询
订单内重复型号处理方案
一、条件格式高亮重复(轻量无运算压力)
针对同一订单内的重复型号,用精准范围的条件格式,比全表COUNTIF运算量小很多:
- 选中型号列(对应样本的E列)及所有数据行
- 点「开始」→「条件格式」→「新建规则」→选「使用公式确定要设置格式的单元格」
- 输入公式:
=COUNTIFS($A$1:$A1,$A1,$E$1:$E1,$E1)>1 - 设置高亮填充色(比如浅红),确定后,同一订单内重复的型号行就会自动标色
二、Power Query批量合并重复(高效处理大数据)
适合批量处理所有订单,自动合并库存和价格,操作全程无手动公式:
- 选中数据区域→点「数据」→「从表格/区域」(勾选「我的表格有标题」)
- 填充订单标识:选中A列→「转换」→「填充」→「向下」,把空的订单号补全
- 删除空行:选任意列→「转换」→「删除行」→「删除空行」
- 分组合并:
- 点「转换」→「分组依据」
- 分组列选订单标识(A列)和型号(E列)
- 添加两个聚合列:
- 名称「合并库存」,操作「求和」,列选库存列(样本的第7列)
- 名称「合并价格」,操作「求和」(或按需选「取第一个值」保留首行价格),列选价格列(样本的第8列)
- 确定后得到合并后的汇总表
- 加载回Excel:点「主页」→「关闭并上载」,合并好的数据就会出现在新工作表
三、VBA一键自动合并删除
要实现自动删除重复行并合并库存价格,用以下宏代码:
Sub MergeDuplicateModels() Dim ws As Worksheet Dim lastRow As Long, i As Long, j As Long Dim currentOrder As String, currentModel As String Set ws = ThisWorkbook.Sheets("Sheet1") ' 改成你的工作表名 lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row ' 向下填充空白的订单标识 ws.Range("A1:A" & lastRow).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" ws.Range("A1:A" & lastRow).Value = ws.Range("A1:A" & lastRow).Value ' 从下往上遍历,避免删除行导致索引混乱 For i = lastRow To 2 Step -1 currentOrder = ws.Cells(i, "A").Value currentModel = ws.Cells(i, "E").Value For j = i - 1 To 1 Step -1 If ws.Cells(j, "A").Value = currentOrder And ws.Cells(j, "E").Value = currentModel Then ' 合并库存和价格到首行 ws.Cells(j, "G").Value = ws.Cells(j, "G").Value + ws.Cells(i, "G").Value ws.Cells(j, "H").Value = ws.Cells(j, "H").Value + ws.Cells(i, "H").Value ' 要保留首行价格就改成ws.Cells(j,"H").Value ' 删除重复行 ws.Rows(i).Delete Exit For End If Next j Next i End Sub
使用步骤:
- 按Alt+F11打开VBA编辑器
- 右键当前工作簿→「插入」→「模块」,粘贴代码
- 按F5运行,或者在工作表添加按钮绑定这个宏,一键执行
内容的提问来源于stack exchange,提问作者John Liko
相关产品推荐
相关产品推荐

