ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: lhlprc

[求助] vba按字典多条件统计分组班级平均分

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-2 08:59 | 显示全部楼层
>>>>>>>>>>>>>>>>>>>>>>

班级平均分统计(按组别).rar (41.38 KB, 下载次数: 119)





TA的精华主题

TA的得分主题

发表于 2016-11-25 22:06 | 显示全部楼层
真的很     快捷

TA的精华主题

TA的得分主题

发表于 2016-11-25 22:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-11-25 22:20 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d As Object
  5.   Set d = CreateObject("scripting.dictionary")
  6.   Set d1 = CreateObject("scripting.dictionary")
  7.   With Worksheets("sheet1")
  8.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  9.     arr = .Range("c3:e" & r)
  10.     For i = 1 To UBound(arr)
  11.       If Not d.exists(arr(i, 1)) Then
  12.         Set d(arr(i, 1)) = CreateObject("scripting.dictionary")
  13.       End If
  14.       If Not d(arr(i, 1)).exists(arr(i, 2)) Then
  15.         ReDim brr(1 To 4)
  16.         brr(1) = arr(i, 1)
  17.         brr(2) = arr(i, 2)
  18.       Else
  19.         brr = d(arr(i, 1))(arr(i, 2))
  20.       End If
  21.       brr(3) = brr(3) + arr(i, 3)
  22.       brr(4) = brr(4) + 1
  23.       d(arr(i, 1))(arr(i, 2)) = brr
  24.     Next
  25.     n = 7
  26.     For Each aa In d.keys
  27.       arr = Application.Transpose(Application.Transpose(d(aa).items))
  28.       d1.RemoveAll
  29.       For i = 1 To UBound(arr)
  30.         If arr(i, 4) <> 0 Then
  31.           arr(i, 3) = Round(arr(i, 3) / arr(i, 4), 2)
  32.           d1(arr(i, 3)) = d1(arr(i, 3)) + 1
  33.         End If
  34.       Next
  35.       nn = 1
  36.       kk = d1.keys
  37.       For k = 0 To UBound(kk)
  38.         mm = Application.Large(kk, k + 1)
  39.         ss = d1(mm)
  40.         d1(mm) = nn
  41.         nn = nn + ss
  42.       Next
  43.       For i = 1 To UBound(arr)
  44.         arr(i, 4) = d1(arr(i, 3))
  45.       Next
  46.       .Cells(4, n).Resize(UBound(arr), UBound(arr, 2)) = arr
  47.       r = .Cells(.Rows.Count, n).End(xlUp).Row
  48.       .Range(.Cells(2, n), .Cells(r, n + 3)).Borders.LineStyle = xlContinuous
  49.       n = n + 5
  50.     Next
  51.   End With
  52. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-11-25 22:21 | 显示全部楼层
呵呵,闲来没事练练手。

班级平均分统计(按组别).rar

42.57 KB, 下载次数: 211

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-10-30 13:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-4-21 14:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-4-21 14:47 | 显示全部楼层
10307951261 发表于 2022-4-21 14:41
留名收藏,也许以后有用

收藏一般用[收藏]功能,这样跟贴的话会把老贴子顶上来。

TA的精华主题

TA的得分主题

发表于 2022-11-18 13:06 | 显示全部楼层
本帖最后由 lcmphy 于 2022-11-18 15:04 编辑

15楼功能很强大!组别增加了,也可以统计出来。
一次联考,有多个组别,有多个科目,类似的,应该可以一次性把每个组每个科目的参考人数、平均分、排名统计出来。原始数据如下附件sheet1工作表,效果如附件统计工作表。
根据前面帖子,属于求助帖子,但是感觉内容与本帖大同小异,故补充到本帖后面求助。

联考成绩表.rar

494.6 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2022-11-18 15:08 | 显示全部楼层
chxw68 发表于 2016-11-25 22:21
呵呵,闲来没事练练手。

字典功能太强大了,但是模仿不了,19楼的附件与这个类似,EH侠圣能百忙中帮助一下么?先谢谢了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-16 03:19 , Processed in 0.024189 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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