ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 求和汇总粘贴的小工具

求和汇总粘贴的小工具

作者:绿色风 分类: 时间:2022-08-18 浏览:142
楼主
amulee
一个合并计算的小改版,目前只有求和功能,效果如下:

 


简单的复制粘贴就可以进行求和汇总,并根据实际情况合并重复的项目。
有兴趣的朋友可以对代码修改完善。

核心代码很简单,参考如下:
  1. Sub MPaste()
  2.     On Error GoTo ErrHandle
  3.     Dim DaOb As New DataObject
  4.     Dim Rng As Range
  5.     Dim d As Object
  6.     Dim Arr, ArrTemp, ArrYS, Ct As Long
  7.     Dim Txt As String
  8.     DaOb.GetFromClipboard
  9.     Txt = DaOb.GetText
  10.     Arr = Split(Txt, vbCrLf)
  11.     ReDim Preserve Arr(1 To UBound(Arr))
  12.     ReDim ArrTemp(1 To UBound(Arr))
  13.     For i = 1 To UBound(Arr)
  14.         ArrTemp(i) = Split(Arr(i), vbTab)
  15.     Next
  16.     ArrTemp = WorksheetFunction.Transpose(WorksheetFunction.Transpose(ArrTemp))
  17.     ArrYS = Application.Selection
  18.     Set Rng = Application.Selection(1)
  19.     Set d = CreateObject("Scripting.Dictionary")
  20.     Ct = UBound(ArrYS)
  21.     '记录原始数据
  22.     For i = 1 To Ct
  23.         d(ArrYS(i, 1)) = d(ArrYS(i, 1)) + ArrYS(i, 2)
  24.     Next i
  25.     '汇总新数据
  26.     For i = 1 To UBound(ArrTemp)
  27.         d(ArrTemp(i, 1)) = d(ArrTemp(i, 1)) + ArrYS(i, 2)
  28.     Next i
  29.     '重新写入单元格
  30.     '清除原数据
  31.     Application.Selection.ClearContents
  32.     '计算行数
  33.     If Ct < d.Count Then
  34.         Application.Selection.Rows(Application.Selection.Rows.Count).Offset(1, 0).Resize(d.Count - Ct, Application.Selection.Columns.Count).Select
  35.         Application.Selection.Insert shift:=xlShiftDown
  36.     End If
  37.     Rng.Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)
  38.     Rng.Offset(0, 1).Resize(d.Count, 1) = WorksheetFunction.Transpose(d.items)
  39.     End
  40. ErrHandle:
  41.     Select Case Err.Number
  42.         Case -2147221404
  43.             MsgBox "未复制源数据"
  44.         Case 9
  45.             MsgBox "请确认数据源是否正确"
  46.     End Select
  47. End Sub
附件下载:
粘贴汇总.zip



该帖已经同步到
2楼
angel928
VB代码好长啊,学习中
3楼
JOYARK1958
謝謝提供學習下載中

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap