ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

   
高效办公必会的Office实战技巧 永久免费,网表让Excel秒变数据库 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! 国内首部Excel函数公式学习大典 职场充电黑科技, Office微视频教程 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 突破Excel限制,用活字格提高效率 12门Excel免费公开课任你学
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
查看: 175|回复: 12

[求助] 提取教师上课节次

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-12 22:17 | 显示全部楼层 |阅读模式
根据表1中黄底色区域数据,填写表2中相应老师任课节次。有几个教师的已做好示例。自己实在是做不出来。我写的代码在附件中有,但确实很糟糕。希望不吝赐教。

带姓名.zip

44.8 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2017-10-12 22:37 | 显示全部楼层
  1. Sub 调整格式()
  2.     Dim vData As Variant, nRow As Integer, nCol As Integer
  3.     Dim oDic As Object
  4.     Dim sWeek As String, nClass As Integer, nLesson As Integer, sTeacher As String
  5.     Dim vFill As Variant
  6.    
  7.     Set oDic = CreateObject("Scripting.Dictionary")
  8.     vData = Sheet1.[A19].CurrentRegion.Value
  9.     For nCol = 4 To UBound(vData, 2)
  10.         If vData(1, nCol) <> "" Then sWeek = Trim(vData(1, nCol))
  11.         If vData(2, nCol) <> "" Then nClass = Val(vData(2, nCol))
  12.         For nRow = 3 To UBound(vData)
  13.             nLesson = Val(vData(nRow, 3))
  14.             If vData(nRow, nCol) <> "" Then
  15.                 sTeacher = Trim(vData(nRow, nCol))
  16.                 oDic(sTeacher & "|" & sWeek & "|" & nLesson) = nClass
  17.             End If
  18.         Next
  19.     Next
  20.     vData = Sheet3.UsedRange.Value
  21.     ReDim vFill(3 To UBound(vData), 3 To UBound(vData, 2))
  22.     For nCol = 3 To UBound(vData, 2)
  23.         If vData(2, nCol) <> "" Then
  24.             sWeek = Trim(vData(2, nCol))
  25.             nLesson = 1
  26.         Else
  27.             nLesson = nLesson + 1
  28.         End If
  29.         For nRow = 3 To UBound(vData)
  30.             sTeacher = Trim(vData(nRow, 1))
  31.             If oDic.Exists(sTeacher & "|" & sWeek & "|" & nLesson) Then vFill(nRow, nCol) = oDic(sTeacher & "|" & sWeek & "|" & nLesson)
  32.         Next
  33.     Next
  34.     Sheet3.[C3].Resize(UBound(vFill) - 2, UBound(vFill, 2) - 2) = vFill
  35. End Sub
复制代码

评分

参与人数 1鲜花 +2 收起 理由
乐乐2006201505 + 2 感谢帮助

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-10-12 22:38 | 显示全部楼层
附上附件以供参考

带姓名(by.micro).rar

48.28 KB, 下载次数: 17

评分

参与人数 1鲜花 +2 收起 理由
乐乐2006201505 + 2 优秀作品

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-12 23:40 | 显示全部楼层
microyip 发表于 2017-10-12 22:38
附上附件以供参考

非常感谢您及时地解答。
可能是我没有说清楚。我想要的结果是星期一有八节课,某个教师带的是第几节课。不是统计所带总节数。比如赵  2星期一第一节1.2两个班上课。则第一节有课,统计为1,统计到表2中赵  2星期一八列中第一列单元格中。我将表格加了一行第几节的内容,重新上传附件,希望得到您的帮助。非常感谢! 捕获.PNG

带姓名(by.micro).xlsm.zip

41.42 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-12 23:42 | 显示全部楼层
microyip 发表于 2017-10-12 22:38
附上附件以供参考

回复的信息需要审核,您早点休息,明天有空请帮我看看,非常感谢!

TA的精华主题

TA的得分主题

发表于 2017-10-13 07:54 | 显示全部楼层
乐乐2006201505 发表于 2017-10-12 23:40
非常感谢您及时地解答。
可能是我没有说清楚。我想要的结果是星期一有八节课,某个教师带的是第几节课。 ...

你细心看清楚,填的数是班次,不是总和,例如,星期一,赵2,在第一节课里有1、2两个班,因为重复了,取了后面的一个班的班次2

评分

参与人数 1鲜花 +2 收起 理由
乐乐2006201505 + 2 感谢帮助

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-13 07:55 来自手机 | 显示全部楼层
本帖最后由 乐乐2006201505 于 2017-10-13 08:57 编辑

奥,谢谢您!我再看看。
另外能不能把赵  2老师的班级在同一个框里面填全,如将2改为1,2。谢谢!

TA的精华主题

TA的得分主题

发表于 2017-10-13 11:18 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-13 11:24 来自手机 | 显示全部楼层
本帖最后由 乐乐2006201505 于 2017-10-13 15:09 编辑

好,我试试,不会了再请教您。

将第16句改为oDic(sTeacher & "|" & sWeek & "|" & nLesson) = nClass & ","& nClass吧!

这样改了不合适啊!
再次求助。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-13 20:47 | 显示全部楼层
microyip 发表于 2017-10-13 11:18
你把建字典的过程改为字符串相连就可以了

具体怎么做,一下午了,还没有头绪,请您明示,谢谢!
您需要登录后才可以回帖 登录 | 免费注册 新浪微博登陆

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天坐享新鲜教程

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

GMT+8, 2017-10-18 02:36 , Processed in 0.083577 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.3

© 2001-2017 Wooffice Inc.

   

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

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

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