Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2684|回复: 8

[已解决]考勤分类,想用VBA实现,请高手指点

[复制链接]
发表于 2012-9-26 13:05 | 显示全部楼层 |阅读模式
10学分
本帖最后由 liyin1743 于 2012-9-27 13:22 编辑

小弟新手,请各位高手指点,附件传上了


不要管1班2班3班是按黄色区域的人名来分(如果在黄色区域后面增加几行中也有姓名),总体想把总表中的考勤用VBA来实现1班、2班、3班里,按人名来分类,

最好在VBA中注释下,不胜感激,本人想学习学习,在线等,请教VBA高手


新的问题出现了,在8楼,附件也在8楼,因改对工号的修改了吧,代码就不能用了,出现1004错误,请高手再次帮个忙
最佳答案
2012-9-26 15:13
效果图没错,1班里有个名字重复了
重复.jpg
单击“1班”、“2班”或“3班”,再执行代码试试看!
  1. Sub xq()
  2. Dim d As Object, rng As Range, arr, brr, i%, j%, k%
  3. Set d = CreateObject("scripting.dictionary")
  4. For Each rng In [B2:I7]
  5.     If rng <> "" Then
  6.         d(rng.Text) = ""
  7.     End If
  8. Next
  9. arr = Sheet1.[A1].CurrentRegion.Value
  10. ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
  11. For i = 2 To UBound(arr)
  12.     If d.exists(arr(i, 2)) Then
  13.         k = k + 1
  14.         For j = 1 To UBound(arr, 2)
  15.             brr(k, j) = arr(i, j)
  16.         Next
  17.     End If
  18. Next
  19. [A9].Resize(Rows.Count - 8, j - 1).ClearContents
  20. [A9].Resize(k, j - 1) = brr
  21. End Sub
复制代码
附件: 考勤分类xq.rar (33.01 KB, 下载次数: 18)

考勤分类.zip

60.07 KB, 下载次数: 8

 楼主| 发表于 2012-9-26 14:26 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-9-26 14:54 | 显示全部楼层
回复

使用道具 举报

发表于 2012-9-26 15:13 | 显示全部楼层    本楼为最佳答案   
效果图没错,1班里有个名字重复了
重复.jpg
单击“1班”、“2班”或“3班”,再执行代码试试看!
  1. Sub xq()
  2. Dim d As Object, rng As Range, arr, brr, i%, j%, k%
  3. Set d = CreateObject("scripting.dictionary")
  4. For Each rng In [B2:I7]
  5.     If rng <> "" Then
  6.         d(rng.Text) = ""
  7.     End If
  8. Next
  9. arr = Sheet1.[A1].CurrentRegion.Value
  10. ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
  11. For i = 2 To UBound(arr)
  12.     If d.exists(arr(i, 2)) Then
  13.         k = k + 1
  14.         For j = 1 To UBound(arr, 2)
  15.             brr(k, j) = arr(i, j)
  16.         Next
  17.     End If
  18. Next
  19. [A9].Resize(Rows.Count - 8, j - 1).ClearContents
  20. [A9].Resize(k, j - 1) = brr
  21. End Sub
复制代码
附件: 考勤分类xq.rar (33.01 KB, 下载次数: 18)
回复

使用道具 举报

 楼主| 发表于 2012-9-26 16:16 | 显示全部楼层
本帖最后由 liyin1743 于 2012-9-26 16:18 编辑
0Mouse 发表于 2012-9-26 15:13
效果图没错,1班里有个名字重复了

单击“1班”、“2班”或“3班”,再执行代码试试看!附件:


谢谢高手,还有一个问题,如果按工号来分类,在代码中要怎么改~~~~谢谢~~~~

能不能注释下代码,我是新手,谢谢
回复

使用道具 举报

发表于 2012-9-26 16:25 | 显示全部楼层
liyin1743 发表于 2012-9-26 16:16
谢谢高手,还有一个问题,如果按工号来分类,在代码中要怎么改~~~~谢谢~~~~

能不能注释下代码,我是 ...

把现在的姓名改成工号
工号.jpg
然后把代码第12行
  1.     If d.exists(arr(i, 2)) Then
复制代码
改成
  1.     If d.exists(arr(i, 1)) Then
复制代码
应该就可以了。
回复

使用道具 举报

 楼主| 发表于 2012-9-26 16:31 | 显示全部楼层
谢谢了,太感谢了,
回复

使用道具 举报

 楼主| 发表于 2012-9-27 12:21 | 显示全部楼层
liyin1743 发表于 2012-9-26 16:31
谢谢了,太感谢了,

高手,后来在总表中,我改了下,要用工号来查找,怎么代码出错,请教你们~~~

考勤分类.zip

63.51 KB, 下载次数: 7

回复

使用道具 举报

发表于 2012-9-29 07:30 | 显示全部楼层
我看了,除非英语六级,否则不要学VBA
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 21:38 , Processed in 1.025819 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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