专业电脑培训机构,为北京、上海、广州、深圳、长沙、武汉、福州、厦门等城市提供EXCEL培训、PPT培训、WORD培训、ACCESS培训、PROJECT培训、MCSE培训、MCITP培训、OFFICE培训等高级培训及相关技术服务。

0592-2967000 18905920174
 福建省厦门市湖里区园山南路866号园山大厦3楼

最新文章列表

会用这种方法合并单元格的都涨工资了..

高士达 云平台 “三板斧”提升生产分..

日报表这样做,快速填写,自动汇总,不..

高士达财务收支预测工具

如何解决EXCEL运行速度慢的问题

不允许EXCEL出现系统的提示对话框

热门文章列表

金牌EXCEL老师刘凌峰教你如何在文本..

利用EXCEL VBA向WORD生成表格和图表..

EXCEL一键实现报关单据生成

【高士达下载】高士达工具箱

厦门高士达EXCEL数据管理平台

利用VLOOKUP提取多个条件的同一结果..

金牌OFFICE老师刘凌峰教你利用VBA调整转换报表方向

关键字:EXCEL VBA,EXCEL培训    发布时间:2022/9/20    作者:admin

问题背景:

某日,有学员请教从系统中导出海量的员工调薪记录,如何快速生成一份调薪报表。我认真观察了其数据,认为这是将竖向报表转换为横向报表的一个典型例子,通过函数的办法比较难实现,利用VBA则迅速完成。

原始表格:

  上表是通过人力资源管理系统导出的调薪记录,数据量非常大,达到几千条。每位员工可能只有一条调薪记录,也可能有多条调薪记录。调整的次数和调整的时间均不确定。

目标报表:

         如上图所示,用户希望生成一张按员工姓名为基准的不重复行报表。即通过重复列的方式减少重复行的数据。

         不仅需要将调薪记录中的所有记录连接成一行的数据,还需将最后一次调薪的数据记录下来。

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 VBA   EXCEL培训   

厦门高士达是一家微软认证培训机构,是专业的EXCEL培训、PPT培训、ACCESS培训、OFFICE培训、微软培训、微软考试及其他IT服务供应商 ©2014 厦门高士达微软高级技术教育中心 闽ICP备16016261号 技术支持:厦门高士达

公安备案号:35020302001734