当前位置: 首页 > news >正文

【VBA】【EXCEL】分类汇总

option explicit option base 1 Sub 分类汇总() Dim ws0 As Worksheet, ws1 As Worksheet Dim arr0 As Variant, arr1 As Variant Dim lastRow As Long, i As Long, m As Long, cnt As Long Dim acct As String, opp As String, key As String, pts() As String Dim amt As Double, tmp As Variant Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary") Set ws0 = Sheets("交易数据") Set ws1 = Sheets("汇总结果") lastRow = ws0.Cells(ws0.Rows.Count, 1).End(xlUp).Row ' 一次性读入数组 arr0 = ws0.Range("A1:D" & lastRow).Value For i = 2 To lastRow acct = arr0(i, 1) opp = arr0(i, 2) amt = arr0(i, 3) key = acct & "|" & opp If Not dict.Exists(key) Then dict(key) = Array(0, 0, 0, 0, 0, 0, 0, "") End If tmp = dict(key) tmp(0) = tmp(0) + 1 If amt < 0 Then tmp(1) = tmp(1) + 1 tmp(4) = tmp(4) + amt Else tmp(2) = tmp(2) + 1 tmp(5) = tmp(5) + amt End If tmp(3) = tmp(3) + amt If amt Mod 100 = 0 Then tmp(6) = tmp(6) + 1 If tmp(7) = "" Or arr0(i, 4) > tmp(7) Then tmp(7) = arr0(i, 4) End If dict(key) = tmp Next i ' 输出 ws1.Cells.Clear cnt = dict.Count ReDim arr1(1 To cnt, 1 To 10) m = 1 For Each key In dict.Keys pts = Split(key, "|") tmp = dict(key) arr1(m, 1) = pts(0) arr1(m, 2) = pts(1) arr1(m, 3) = tmp(0) arr1(m, 4) = tmp(1) arr1(m, 5) = tmp(2) arr1(m, 6) = tmp(3) arr1(m, 7) = tmp(4) arr1(m, 8) = tmp(5) arr1(m, 9) = tmp(6) arr1(m, 10) = tmp(7) m = m + 1 Next ws1.Range("A1:J1") = Array("账户名", "对手名", "交易总次数", "转出总次数", _ "转入总次数", "累计金额", "转出总金额", "转入总金额", _ "整百金额次数", "最后一次转账时间") If cnt > 0 Then ws1.Range("A2:J" & 1 + cnt) = arr1 ws1.Columns.AutoFit MsgBox "汇总完成!" End Sub
http://www.jsqmd.com/news/598881/

相关文章:

  • 篡改猴Tampermonkey失效解决方案
  • 单目相机实战:用OpenCV的solvePnP实现物体位姿估计(附Python代码)
  • C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)
  • 100个服装款的PPT商品详情页,我用这三步1分钟搞定
  • 常见网络连接问题分类
  • 基于非对称纳什谈判理论的微网电能共享运行优化策略:合作博弈与P2P交易完美复现的完美电网技术文献实践
  • 2026年二手化工设备二手制药设备厂家最新推荐:二手蒸发器回收、二手离心机回收、二手干燥机回收、二手混合机回收、二手反应釜回收厂家选择指南 - 海棠依旧大
  • 游戏开发中的“场”魔法:用梯度、散度模拟水流、烟雾与热量扩散
  • ParaView实战:5分钟搞定热流图单元格体积计算(附Python脚本)
  • 4月3日
  • C++ 硬件特征自适应分发:利用 C++ 特性实现对不同 CPU 指令集(AVX2/AVX-512)的运行时代码路径最优选择
  • **发散创新:基于C语言实现的实时内核任务调度机制设计与实践**在嵌入式系统开发中,**实时内核(Real-TimeK
  • NCM格式自由转换:用ncmdump突破网易云音乐加密限制
  • 无氟空调蜗轮塑料模设计【说明书+solidworks三维+CAD图纸+开提报告+任务书+数控编程及加工录像】
  • 回溯算法解组合总和问题(Python,Java,C语言)
  • 股票相似K线匹配的Python实现:Tushare数据+皮尔逊相关系数全解析
  • PHP脚本设置无限执行时间的四种方法
  • 通俗易懂理解RAG
  • 超链接(a 标签)课堂笔记
  • C++20 协同调度原语:利用 std::atomic::wait/notify 实现低功耗自旋锁在高并发下的快速响应协议
  • 分布式信号量计数器控制共享资源访问
  • OpenClaw与CSDN Bot版本兼容配置指南
  • XPath 精选:如何排除子元素
  • **Serverless框架实战:用Node.js打造高可用无服务器应用**在
  • UART 入门指南(Linux新手版)
  • 如何用 AI Agent Harness Engineering 重构企业生产流程:一套可复制的落地方法论
  • PHP中比较两个对象的几种方式小结
  • 小红书下载神器:3分钟学会无水印批量采集小红书内容
  • 【教程4>第12章>第9节】基于FPGA的图像缩放实现——图像横向拉伸理论分析matlab仿真以及verilog实现
  • 保姆级教程:用ROS的message_filters搞定相机、IMU与激光雷达的时间同步(附避坑指南)