|
本帖最后由 清风竹- 于 2013-3-27 19:39 编辑
4684890 发表于 2013-3-27 18:49
Sub 利润汇()
Dim wj As String, fs As Object
Application.ScreenUpdating = False - Sub 资负汇()
- Dim wj As String, fs As Object
- Application.ScreenUpdating = False '关闭屏幕刷新
- Application.DisplayAlerts = False '禁止弹出对话框
- wj = Dir(ThisWorkbook.Path & "\*.xlsx") '中的*号表示本文件夹下所有的xlsx文件,是通配符;
- Do While wj <> "" 'Do Loop一种循环语句,一直循环到找不到工作簿.
- If wj <> ThisWorkbook.Name Then '如果,在本文件夹内,找到的工作簿名不是本工作簿(汇总),那么
- Set fs = GetObject(ThisWorkbook.Path & "" & wj) '打开这个工作簿,是按循环顺序打开其中的一个
- For i = 2 To Range("IV5").End(xlToLeft).Column 'For Next一种循环语句 i = 2 To 第5行(店名)有数据最后一列的列数
- If Cells(5, i).Value = Split(wj, ".xlsx")(0) Then '如果单元格的店名与找到的工作簿名称数据一致,那么
- i2 = i '工作簿名称与店名相同时 店名所在的列数i2
- Exit For '退出i的循环
- End If '上3行If结束语句
- Next '上5行For 结束语句
- fs.Sheets("资产负债表").Range("D7:D85").Offset(0, (Split([a3], "月")(0)) - 1).Copy Destination:=Cells(6, i2).Resize(79, 1)
- '刚打开的工作簿中的,表Sheets("资产负债表"),区域Range("D7:D85")是1月份数据的区域,这句Offset(0, (Split([a3], "月")(0)) - 1)表 '示区域Range("D7:D85")的偏移量,行不偏移0,列的偏移量为,月数减1,
- '(Split([a3], "月")(0))意思为,A3格某月的月字替换掉,只留数字.如果是2月,区域的偏移量为2-1=1,则区域Range("D7:D85")向右偏移1列,实际为Range("F7:F85")
- '复制这个区域,粘贴到本工作表(资产负债表)的第6行第i2列,行数79行,1列的区域.
- fs.Close '关闭刚打开的这个工作簿
- End If '上10行If结束语句
- wj = Dir '寻找下一个工作簿
- Loop 'Do的结束语句,进行下一个循环.
- Application.DisplayAlerts = True '恢复屏幕刷新
- Application.ScreenUpdating = True '恢复弹出对话框
- End Sub
复制代码 以上解释有的不太专业,不太全面,不太准确,供参考。 |
|