ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 《新人求助》点击生成个人课表的同时,自动统计个人任课情况,填到模板的表格里,...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-23 12:16 | 显示全部楼层 |阅读模式
本帖最后由 15117380152 于 2019-8-23 22:40 编辑

《新人求助》根据总课表,点击生成个人课表的同时,自动统计个人任课情况,填到模板的表格里,根据模板单独另外生成教师个人课表,用VBA怎么实现,麻烦大师们帮我写段代码,谢谢,感激不尽!请见附件!在线等待中。。。。。。。附件已重新做修改说明!请各位老师就当练练手!帮个忙!谢谢!
QQ截图20190823113537.jpg

附件0.rar

48.17 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2019-8-23 20:48 | 显示全部楼层
笔误,修改好了。

附件0.rar

99.17 KB, 下载次数: 34

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-23 14:00 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-8-23 15:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是想点一下按钮然后把总表里的所有老师都单独做一个像模板的那种表吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-23 15:44 | 显示全部楼层
donghui2363 发表于 2019-8-23 15:11
是想点一下按钮然后把总表里的所有老师都单独做一个像模板的那种表吗?

是的,附件已重新做修改说明,谢谢!

附件0.rar

48.17 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2019-8-23 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你的总课表,周一至周五不是横着排列的,还有就是在内容里也有合并单元格,很麻烦

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-23 16:56 | 显示全部楼层
donghui2363 发表于 2019-8-23 15:58
你的总课表,周一至周五不是横着排列的,还有就是在内容里也有合并单元格,很麻烦

星期横着排的太长了,如果有时间请帮忙看一下,,,,谢谢,辛苦了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-23 17:12 来自手机 | 显示全部楼层
donghui2363 发表于 2019-8-23 15:58
你的总课表,周一至周五不是横着排列的,还有就是在内容里也有合并单元格,很麻烦

总课表内有些单元格看起来像合并的,但是不是,是因为两边单元里没输入内容,所以才被“占用”的!

TA的精华主题

TA的得分主题

发表于 2019-8-23 17:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d As Object
  5.   Application.ScreenUpdating = False
  6.   Application.DisplayAlerts = False
  7.   Set d = CreateObject("scripting.dictionary")
  8.   Set d1 = CreateObject("scripting.dictionary")
  9.   vs = [{"早辅",1;"第一节",2;"第二节",3;"第三节",5;"第四节",6;"第五节",8;"第六节",9;"第七节",10;"第八节",12;"第九节",13}]
  10.   For i = 1 To UBound(vs)
  11.     d1(vs(i, 1)) = vs(i, 2)
  12.   Next
  13.   With Worksheets("总课表")
  14.     r = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
  15.     c = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
  16.     arr = .Range("a1").Resize(r, c)
  17.   End With
  18.   For k = 3 To 33 Step 30
  19.     For j = 3 To UBound(arr, 2)
  20.       If Len(arr(k, j)) <> 0 Then
  21.         xq = arr(k, j)
  22.         n = InStr("一二三四五", Right(xq, 1)) * 2 - 1
  23.       End If
  24.       For i = k + 2 To k + 26 Step 2
  25.         If d1.exists(arr(i, 1)) Then
  26.           m = d1(arr(i, 1))
  27.           If Len(arr(i + 1, j)) <> 0 Then
  28.             If Not d.exists(arr(i + 1, j)) Then
  29.               ReDim brr(1 To 13, 1 To 10)
  30.             Else
  31.               brr = d(arr(i + 1, j))
  32.             End If
  33.             brr(m, n) = arr(k + 1, j)
  34.             brr(m, n + 1) = arr(i, j)
  35.             d(arr(i + 1, j)) = brr
  36.           End If
  37.         End If
  38.       Next
  39.     Next
  40.   Next
  41.   With Worksheets("模板")
  42.     .Range("a12:f16").ClearContents
  43.     For Each aa In d.keys
  44.       brr = d(aa)
  45.       d1.RemoveAll
  46.       For i = 1 To UBound(brr)
  47.         For j = 1 To UBound(brr, 2) Step 2
  48.           If Len(brr(i, j)) <> 0 Then
  49.             xm = brr(i, j) & "+" & brr(i, j + 1)
  50.             If Not d1.exists(xm) Then
  51.               ReDim crr(1 To 3)
  52.               crr(1) = brr(i, j)
  53.               crr(2) = brr(i, j + 1)
  54.             Else
  55.               crr = d1(xm)
  56.             End If
  57.             crr(3) = crr(3) + 1
  58.             d1(xm) = crr
  59.           End If
  60.         Next
  61.       Next
  62.       .Range("a4") = aa
  63.       m = 12
  64.       n = 1
  65.       For Each bb In d1.keys
  66.         crr = d1(bb)
  67.         .Cells(m, n) = crr(1)
  68.         .Cells(m, n + 1) = crr(2)
  69.         .Cells(m, n + 2) = crr(3)
  70.         m = m + 1
  71.         If m > 16 Then
  72.           m = 12
  73.           n = n + 3
  74.         End If
  75.       Next
  76.       .Range("i7").Resize(UBound(brr), UBound(brr, 2)) = brr
  77.       On Error Resume Next
  78.       Set ws = Worksheets(aa)
  79.       If Err = 0 Then
  80.         ws.Delete
  81.       End If
  82.       On Error GoTo 0
  83.       .Copy after:=Worksheets(Worksheets.Count)
  84.       With ActiveSheet
  85.         .Name = aa
  86.       End With
  87.     Next
  88.   End With
  89. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2019-8-23 17:51 | 显示全部楼层
详见附件。

附件0.rar

94.74 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2019-8-23 18:12 | 显示全部楼层
又完善了一下。

附件0.rar

98.35 KB, 下载次数: 8

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-17 00:47 , Processed in 0.047107 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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