Excel精英培训网

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

[已解决]请教月度工资汇总。

[复制链接]
发表于 2010-3-22 20:51 | 显示全部楼层 |阅读模式

想通过宏汇总E列单位代码(对应1至12表中B列)的汇总单位的月度工资(对应1至12表的AA列)。(现在为了方便,只用3个月,今后月份工工资表格会随月份增加而增加,最多12个月)

见附件

aowkEm2X.rar (45.34 KB, 下载次数: 23)

发表于 2010-3-22 21:12 | 显示全部楼层

个人感觉用透视表可能更方便,可是我还不会
回复

使用道具 举报

 楼主| 发表于 2010-3-22 23:36 | 显示全部楼层

QUOTE:
以下是引用fjmxwrs在2010-3-22 21:12:00的发言:
个人感觉用透视表可能更方便,可是我还不会

现在为了方便,只用3个月,今后月份工工资表格会随月份增加而增加,最多12个月。

回复

使用道具 举报

发表于 2010-3-23 20:36 | 显示全部楼层

学习。。。。。。。。。

[此贴子已经被作者于2010-3-23 20:36:44编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-3-23 21:19 | 显示全部楼层

QUOTE:
以下是引用包您满意在2010-3-23 20:42:00的发言:
其实不用用宏的。。用函数也可以操作的而且也不会很复杂。。。

假如不用宏,每月有5000人,统计12个月用函数统计速度是不是很慢?

回复

使用道具 举报

发表于 2010-3-24 01:27 | 显示全部楼层    本楼为最佳答案   

看看这段代码行不行

Sub temp()
Dim ARng As Range
Dim BRng As Range
Dim AFR As Range
Dim BFR As Long
Dim SHName As String
Dim ARNum As Long
Dim BRNum As Long
Dim ACNum As Byte

Set ARng = Application.InputBox(prompt:="请输入需要汇总的单元格", Title:="工资汇总", Type:=8)
ARNum = ARng.Rows.Count
Set BRng = Application.InputBox(prompt:="请输入需要汇总的区域", Title:="工资汇总", Type:=8)
SHName = BRng.Worksheet.Name
BRNum = BRng.Rows.Count
ACNum = CLng(SHName)
With Worksheets("单位工资统计")
For Each AFR In ARng
For BFR = 10 To (BRNum + 10)
If AFR.Value = Worksheets(SHName).Cells(BFR, 2).Value Then
.Cells(AFR.Row, AFR.Column + ACNum).Value = .Cells(AFR.Row, AFR.Column + ACNum).Value + Worksheets(SHName).Cells(BFR, 27).Value
End If
Next BFR
Next AFR
End With
Set ARng = Nothing
Set BRng = Nothing
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-3-24 07:04 | 显示全部楼层

QUOTE:
以下是引用gdgzlyh在2010-3-24 1:27:00的发言:

Sub temp()
Dim ARng As Range
Dim BRng As Range
Dim AFR As Range
Dim BFR As Long
Dim SHName As String
Dim ARNum As Long
Dim BRNum As Long
Dim ACNum As Byte

Set ARng = Application.InputBox(prompt:="请输入需要汇总的单元格", Title:="工资汇总", Type:=8)
ARNum = ARng.Rows.Count
Set BRng = Application.InputBox(prompt:="请输入需要汇总的区域", Title:="工资汇总", Type:=8)
SHName = BRng.Worksheet.Name
BRNum = BRng.Rows.Count
ACNum = CLng(SHName)
With Worksheets("单位工资统计")
For Each AFR In ARng
For BFR = 10 To (BRNum + 10)
If AFR.Value = Worksheets(SHName).Cells(BFR, 2).Value Then
.Cells(AFR.Row, AFR.Column + ACNum).Value = .Cells(AFR.Row, AFR.Column + ACNum).Value + Worksheets(SHName).Cells(BFR, 27).Value
End If
Next BFR
Next AFR
End With
Set ARng = Nothing
Set BRng = Nothing
End Sub

测试类型不匹配。

回复

使用道具 举报

发表于 2010-3-24 11:36 | 显示全部楼层

这段程序试验过在你的附件中已能正常统计

[em06]
回复

使用道具 举报

 楼主| 发表于 2010-3-24 19:17 | 显示全部楼层

是我操作没对,可以实现。谢谢。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 11:23 , Processed in 0.419685 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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