ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何分别统计每名教师授课班级的学生总人数同时列出各班人数的求和式且可即时更新呢?

如何分别统计每名教师授课班级的学生总人数同时列出各班人数的求和式且可即时更新呢?

作者:绿色风 分类: 时间:2022-08-18 浏览:159
楼主
0Mouse
Q:如何分别统计每名教师授课班级的学生总人数同时列出各班人数的求和式且可即时更新呢?
问题预览图:

 
A:示例代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column < 4 Then
  3.     Dim arr, d1 As Object, i%, brr(1 To 1000, 1 To 1000), Ar(1 To 1000, 1 To 2), d2 As Object, j%, k%, crr, drr, m%, sr$
  4.     Set d1 = CreateObject("scripting.dictionary")
  5.     Set d2 = CreateObject("scripting.dictionary")
  6.     arr = Range("A1").CurrentRegion
  7.     For i = 2 To UBound(arr)
  8.         If arr(i, 2) <> "" And arr(i, 3) <> "" Then
  9.             If Not d1.exists(arr(i, 2)) Then
  10.                 d1.Add arr(i, 2), d1.Count + 1
  11.                 brr(d1.Count, 1) = arr(i, 2)
  12.                 brr(d1.Count, 2) = arr(i, 3)
  13.                 Ar(d1.Count, 1) = arr(i, 3)
  14.                 Ar(d1.Count, 2) = 2
  15.             Else
  16.                 Ar(d1(arr(i, 2)), 1) = Ar(d1(arr(i, 2)), 1) + arr(i, 3)
  17.                 Ar(d1(arr(i, 2)), 2) = Ar(d1(arr(i, 2)), 2) + 1
  18.                 brr(d1(arr(i, 2)), Ar(d1(arr(i, 2)), 2)) = arr(i, 3)
  19.             End If
  20.         End If
  21.     Next
  22.     For j = 1 To d1.Count
  23.         For k = 2 To UBound(arr)
  24.             If brr(j, k) <> "" Then
  25.                 d2(brr(j, k)) = d2(brr(j, k)) + 1
  26.             End If
  27.         Next
  28.         crr = d2.keys
  29.         drr = d2.items
  30.         For m = 0 To d2.Count - 1
  31.             sr = sr & crr(m) & IIf(drr(m) > 1, "*" & drr(m), "") & "+"
  32.         Next
  33.         brr(j, 2) = Left(sr, Len(sr) - 1) & "=" & Ar(j, 1)
  34.         sr = ""
  35.         d2.RemoveAll
  36.         Erase crr: Erase drr
  37.     Next
  38.     [F1:G1] = Array("老师名", "人数统计")
  39.     [F2].Resize(d1.Count, 2) = brr
  40.     Set d1 = Nothing
  41.     Set d2 = Nothing
  42.     Erase brr: Erase arr: Erase Ar
  43. End If
  44. End Sub
附件:
分别统计每名教师授课班级的学生总人数同时列出各班人数的求和式且可即时更新.rar
2楼
篮板球
社区VBA高手如云,学习之。

免责声明

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

评论列表
sitemap