Excel精英培训网

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

[已解决]过程太大运行不了,求高手帮简化

[复制链接]
发表于 2015-10-23 11:15 | 显示全部楼层
  1. Sub main()
  2.     Application.ScreenUpdating = False
  3.     Sheets("表1").Range("c3:k61") = "" '清空单元格
  4.     With Sheets("Sheet1")
  5.           icount = .[a1].CurrentRegion.Rows.Count
  6.           For a = 5 To icount '职工人数
  7.             b = .Cells(a, 20).Value '任职年限
  8.             c = .Cells(a, 14).Value '工作年限
  9.             gw = .Cells(a, 18)
  10.             Call 汇总(gw, b, c)   '根据岗位、任职年限、工作年限找到对应的单元格位置后+1
  11.           Next
  12.     End With
  13.     Application.ScreenUpdating = True
  14. End Sub

  15. Sub 汇总(gw, b, c)     '根据岗位、任职年限、工作年限汇总
  16.     With Sheets("表1")
  17.         Set xrng = .[a:a].Find(gw, lookat:=xlWhole)
  18.         If Not xrng Is Nothing Then
  19.             r = xrng.Row      '根据工作岗位找到对应的行
  20.             r1 = IIf(b < 6, r, IIf(b < 11, r + 1, IIf(b < 16, r + 2, r + 3)))         '根据任职年限确定要填充的行
  21.             c1 = IIf(c = 0, 3, Int((c - 0.1) / 5) + 3)       '根据工作年限确定要填充的列
  22.             .Cells(r1, c1) = Val(.Cells(r1, c1)) + 1
  23.             .Cells(75, c1) = Val(.Cells(75, c1)) + 1
  24.         End If
  25.     End With
  26. End Sub
复制代码
回复

使用道具 举报

发表于 2015-10-23 11:16 | 显示全部楼层
对初学者,字典可能比较难以理解。上楼是根据你的基本思路改写的,可参考。
主要是根据岗位、年限,确定在表1中填充的位置。
用了子程序,可以大量减少编程的代码量。

统计程序.rar

29.61 KB, 下载次数: 1

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 06:55 , Processed in 0.296813 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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