Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: dyzx

[已解决]教师任课表转换

[复制链接]
发表于 2016-11-24 11:48 | 显示全部楼层
其实源数据也比较规范
1、找到含“初”的
2、去掉前面含“任”的
3、处理不含数字的(默认全年级所有班)
4、处理含“—”的
5、年级+班级+任课为key,姓名为item

评分

参与人数 1 +9 收起 理由
today0427 + 9 这老师太好了,写代码还附送讲解,德才双修.

查看全部评分

回复

使用道具 举报

发表于 2016-11-24 11:52 | 显示全部楼层
grf1973 发表于 2016-11-24 11:48
其实源数据也比较规范
1、找到含“初”的
2、去掉前面含“任”的

老师太厉害!!!
回复

使用道具 举报

发表于 2016-11-24 11:56 | 显示全部楼层
昨晚午夜梦回的时候还在想正则能不能做
回复

使用道具 举报

发表于 2016-11-24 12:11 | 显示全部楼层
today0427 发表于 2016-11-24 11:56
昨晚午夜梦回的时候还在想正则能不能做

today你已经走火入魔了

评分

参与人数 1 +9 收起 理由
today0427 + 9 我也就是想了想然后就睡着了,这就是菜鸟和.

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-11-24 13:35 | 显示全部楼层
本帖最后由 dyzx 于 2016-11-24 14:07 编辑

grf1973老师:非常多谢你的帮忙,但还有几个没有转换成功,而且初一是12个班的,多谢。
回复

使用道具 举报

发表于 2016-11-24 15:21 | 显示全部楼层
没转成功的你看一下源数据,看看能否改一下内容;12个班的也简单,把里面的1—11改成1—20吧,总够了。
回复

使用道具 举报

发表于 2016-11-24 15:22 | 显示全部楼层
today0427 发表于 2016-11-24 11:56
昨晚午夜梦回的时候还在想正则能不能做

本想让你等正则大神出手的,都太谦虚。。。。。。。
回复

使用道具 举报

发表于 2016-11-24 15:39 | 显示全部楼层    本楼为最佳答案   
把 张生76        初二1—4音乐  初一10、11 初三1—5音乐 舞蹈队
改为  张生76        初二1—4音乐  初一10、11音乐
  1. Sub 转换()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = Sheets(1).[a1].CurrentRegion
  4.     For i = 3 To UBound(arr)
  5.         For j = 2 To UBound(arr, 2) Step 3
  6.             xm = arr(i, j)   '姓名
  7.             If Len(xm) > 0 Then
  8.                 rk = arr(i, j + 1)  '任课
  9.                 If InStr(rk, "初") > 0 Then
  10.                     rkrr = Split(rk, " ")
  11.                     For Each rk In rkrr
  12.                         If InStr(rk, "初") > 0 And InStr(rk, "任") = 0 Then   '去掉“班任”等
  13.                             nj = Left(rk, 2) '年级
  14.                             bj = Mid(rk, 3) '班级+任课
  15.                             For k = Len(bj) To 1 Step -1
  16.                                 If IsNumeric(Mid(bj, k, 1)) Then Exit For
  17.                             Next
  18.                             km = Mid(bj, k + 1)  '任课
  19.                             bj = Replace(bj, km, "")   '班级
  20.                             If Len(bj) = 0 Then bj = "1—20"
  21.                             p = InStr(bj, "—")
  22.                             If p > 0 Then    '班级中含“—”,1—5 转换成1、2、3、4、5
  23.                                 s = Val(bj): e = Val(Mid(bj, p + 1))
  24.                                 bj = ""
  25.                                 For k = s To e
  26.                                     bj = bj & "、" & k
  27.                                 Next
  28.                                 bj = Mid(bj, 2)
  29.                             End If
  30.                             bjrr = Split(bj, "、")
  31.                             For k = 0 To UBound(bjrr)
  32.                                 x = nj & "(" & bjrr(k) & ")班" & km   '年级+班级+任课为key
  33.                                 d(x) = xm
  34.                             Next
  35.                         End If
  36.                     Next
  37.                 End If
  38.             End If
  39.         Next
  40.     Next
  41.     With Sheets(2)
  42.         .[b3:o100] = ""
  43.         arr = .[a1].CurrentRegion
  44.         For i = 3 To UBound(arr)
  45.             For j = 2 To UBound(arr, 2)
  46.                 x = arr(i, 1) & arr(2, j)
  47.                 arr(i, j) = d(x)
  48.             Next
  49.         Next
  50.         .[a1].CurrentRegion = arr
  51.     End With
  52. End Sub
复制代码
初三1—5音乐 舞蹈队

教师分工表格式转换.rar

19.82 KB, 下载次数: 10

评分

参与人数 1 +2 收起 理由
dyzx + 2 赞一个

查看全部评分

回复

使用道具 举报

发表于 2016-11-24 15:55 | 显示全部楼层
grf1973 发表于 2016-11-24 15:22
本想让你等正则大神出手的,都太谦虚。。。。。。。

不是谦虚,是心虚[em34]
回复

使用道具 举报

 楼主| 发表于 2016-11-24 16:04 | 显示全部楼层
grf1973 发表于 2016-11-24 15:39
把 张生76        初二1—4音乐  初一10、11 初三1—5音乐 舞蹈队
改为  张生76        初二1—4音乐  初一10、11音乐   ...

grf1973老师:现在全部可以了,非常多谢你的帮忙,多谢。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 03:11 , Processed in 0.595632 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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