- 最新文章列表
专业电脑培训机构,为北京、上海、广州、深圳、长沙、武汉、福州、厦门等城市提供EXCEL培训、PPT培训、WORD培训、ACCESS培训、PROJECT培训、MCSE培训、MCITP培训、OFFICE培训等高级培训及相关技术服务。
某日,有学员请教从系统中导出海量的员工调薪记录,如何快速生成一份调薪报表。我认真观察了其数据,认为这是将“竖向”报表转换为“横向”报表的一个典型例子,通过函数的办法比较难实现,利用VBA则迅速完成。
上表是通过人力资源管理系统导出的调薪记录,数据量非常大,达到几千条。每位员工可能只有一条调薪记录,也可能有多条调薪记录。调整的次数和调整的时间均不确定。
如上图所示,用户希望生成一张按员工姓名为基准的不重复行报表。即通过重复列的方式减少重复行的数据。
不仅需要将调薪记录中的所有记录连接成一行的数据,还需将最后一次调薪的数据记录下来。
Sub 调整报表()
k = 2
For i = 3 To Application.WorksheetFunction.CountA(Range("a1:a2000"))
myname = Sheet1.Cells(i, 1)
For n = k To 1000
tname = Sheet2.Cells(n, 1)
If myname = tname Then
Sheet1.Cells(i, 6 + c) = Sheet2.Cells(k, 2)
Sheet1.Cells(i, 7 + c) = Sheet2.Cells(k, 3)
Sheet1.Cells(i, 8 + c) = Sheet2.Cells(k, 4)
Sheet1.Cells(i, 9 + c) = Sheet2.Cells(k, 5)
Sheet1.Cells(i, 10 + c) = Sheet2.Cells(k, 6)
Sheet1.Cells(i, 11 + c) = Sheet2.Cells(k, 7)
c = c + 6
k = k + 1
Else
Sheet1.Cells(i, 2) = Sheet2.Cells(k - 1, 2)
Sheet1.Cells(i, 3) = Sheet2.Cells(k - 1, 3)
Sheet1.Cells(i, 4) = Sheet2.Cells(k - 1, 4)
Sheet1.Cells(i, 5) = Sheet2.Cells(k - 1, 5)
c = 0
Exit For
End If
Next n
Next i
End Sub
通过两次循环,将数据快速按指定方式生成报表。
EXCEL不是万能的,没有EXCEL是万万不能的。如果需要稍微复杂一点的功能,还是离不开VBA的协助。
也许你并不需要此功能,但如果你在EXCEL使用方面碰到任何问题,欢迎联系我。
下载案例源文件请联系:0592-2967000
厦门高士达是一家微软认证培训机构,是专业的EXCEL培训、PPT培训、ACCESS培训、OFFICE培训、微软培训、微软考试及其他IT服务供应商 ©2014 厦门高士达微软高级技术教育中心 闽ICP备16016261号 技术支持:厦门高士达