本帖最后由 posxb520 于 2018-4-4 11:51 编辑
本人最近才开始接触的excel vba,因工作需要,需要做一个员工的工时统计表,把每个员工一个月内工作过的时间全部加起来,所以一共需要分31天的工作表,然后再一次性汇总到工时统计表上。 可是由于名字在填写时不一定按顺序排行,因此没办法直接使用sum的公式完成表格,而是需要先把每个工作表上的名字和工时统计表上的名字对应后,在把同一名字的人的工时全部相加来完成。
我想到了用遍历sheet的方式把每个工作表都循环一次,却只做到了把每个表的姓名和工时统一并相加,问题是没办法把31个表格之间的姓名和工时统一并相加。
sub test() for each sht in worksheet if sht.name like "*" & "号" then with sht for a = 6 to sheet1.range("f65533").end(xlup).row for b = 8 to sheet2.range("e65533").end(xlup).row if len(sheet1.cells(a,"F"))>0 and len(.cells(b,"E"))>0 and sheet1.cells(a,"F") = .cells(b,"E") then c = c + .cells(b,"G").value sheet1.cells(a,"G").value = c end if next c = 0 next sht.activate end with end if next end sub
想请教一下如何把sheet之间的工时统计起来,汇总到对应的姓名上,或者有另外更好的办法!! |