ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1944|回复: 14

[求助] VBA实现B列所有重复的行,对应C列的所有值求和后只保留一行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-2-24 23:28 | 显示全部楼层 |阅读模式

各位大神好!

本人初学者,想学习实现以下效果;请大家指导。
VBA实现B列“编号”如果有重复的值,对应C列的“数量”求和,然后B列进行去重,保留对应C列求和后的那一行;其它列不变


大家可以参考附件,由SHeet1 变成sheet2的效果。

需要
谢谢。

附件.rar

6.87 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2021-2-25 03:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用字典法可以实现

TA的精华主题

TA的得分主题

发表于 2021-2-25 09:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
典型的字典应用
360截图16300501182911.png

TA的精华主题

TA的得分主题

发表于 2021-2-25 09:38 | 显示全部楼层
附件供参考

附件.zip

14.95 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2021-2-25 10:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub test()
  Dim Cn As Object, Rs As Object, Sq As String, ar, i As Integer
  Set Cn = CreateObject("ADODB.Connection")
  Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
  With Worksheets(1)
    ar = .[a1:e1 & ""]
    Sq = "SELECT FIRST(" & ar(1) & ") AS " & ar(1) & "," & ar(2) & ",SUM(" & ar(3) & ") AS " & ar(3) & ", FIRST(" & ar(4) & ") AS " & ar(4) & ", FIRST(" & ar(5) & ") AS " & ar(5) & _
         " FROM [" & .Name & "$" & .Range("A1").CurrentRegion.Address(0, 0) & "] GROUP BY " & ar(2)
  End With
  Set Rs = Cn.Execute(Sq)
  With Worksheets(2).Range("A1")
    .CurrentRegion.ClearContents
    For i = 0 To Rs.Fields.Count - 1
      .Offset(0, i) = Rs.Fields(i).Name
    Next
    .Offset(1).CopyFromRecordset Rs
  End With
  Set Rs = Nothing: Cn.Close: Set Cn = Nothing: Beep
End Sub

TA的精华主题

TA的得分主题

发表于 2021-2-25 10:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-2-25 12:06 | 显示全部楼层
'如果编号有序这样也可以,,,

Option Explicit

Sub test()
  Dim arr, i, j, m, p, sum
  arr = Sheets("sheet1").[a1].CurrentRegion.Offset(1).Value
  For i = 1 To UBound(arr, 1) - 1
    sum = sum + arr(i, 3)
    If arr(i, 2) <> arr(i + 1, 2) Then
      m = m + 1
      For j = 1 To UBound(arr, 2)
        arr(m, j) = arr(p + 1, j)
      Next
      p = i: arr(m, 3) = sum: sum = 0
    End If
  Next
  Sheets("sheet2").[a2].Resize(m, UBound(arr, 2)) = arr
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-2 10:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢你。
但是我想实现在Sheet1(原工作表)中实现,不需要重新再新建sheet2。
该怎么实现呢?

TA的精华主题

TA的得分主题

发表于 2021-3-2 11:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
rkrkrk123 发表于 2021-3-2 10:30
谢谢你。
但是我想实现在Sheet1(原工作表)中实现,不需要重新再新建sheet2。
该怎么实现呢?

图片.png
把结果输出到你想要改的位置就行了啊



TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-3 12:59 | 显示全部楼层
于箱长 发表于 2021-3-2 11:50
把结果输出到你想要改的位置就行了啊

改了,不行啊。
C:\Users\zhaocn\Desktop\44444444.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 20:34 , Processed in 0.038204 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表