|
本帖最后由 ~^o^~___^o^y 于 2018-7-28 16:47 编辑
为什么最后一列没有数据?
Sub huizong()
Application.ScreenUpdating = False '禁止屏幕筛选,提高代码运行速度
ReDim arr(1 To 10000, 1 To 9) '定义数组arr,用于存放汇总数据
f = Dir(ThisWorkbook.Path & "\*.xls*") '建立文件目录到变量f
Do While f <> "" '在不为空的文件目录中循环
If f <> ThisWorkbook.Name Then '如果不是代码所在工作簿文件
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f) '打开文件,便于获取数据,汇总
m = m + 1 '记录打开文件的个数
With wb.Worksheets(1) '在代码打开的文件的第一个工作表内循环
brr = .UsedRange '把代码打开的文件的第一个工作表内的有效 数据装入数组brr,便于汇总
End With
For i = 6 To UBound(brr) '在数组brr的行内循环
If brr(i, 2) = "" Then '
brr(i, 2) = brr(i - 1, 2) '
End If '
Next i '
'''''以上句代码处理合并单元格
For i = 6 To UBound(brr) '在数组brr的行内循环
If Len(brr(i, 1)) Then '如果第一列不为空并且是数字And VBA.IsNumeric(brr(i, 1))
n = n + 1 'arr数组行号顺序递增
arr(n, 1) = brr(2, 1) '取得客户信息
arr(n, 2) = Mid(brr(3, 5), 6, Len(brr(3, 5)) - 5) '取得日期信息
arr(n, 3) = brr(i, 1) '取得序号信息
arr(n, 4) = brr(i, 2) '取得名称信息
arr(n, 5) = brr(i, 3) '取得P/O信息
arr(n, 6) = brr(i, 4) '取得数量信息
arr(n, 7) = brr(i, 5) '取得单价信息
arr(n, 8) = brr(i, 6) '取得金额信息
arr(n, 9) = brr(5, 6) '取得币种信息 ------- 这个地方 如果改成arr(n,3)=brr(5,6)就有数据不知道怎么回事了,这个代码是我请版主写的我改了下加了最后这一句
End If '结束条件判断
Next i '结束数组行循环
wb.Close False '关闭代码打开的文件,不保存,如果为true则是关闭的同时保存文件
End If '结束条件判断
f = Dir '寻找一下个文件
Loop '结束循环
[a1].CurrentRegion.Offset(2).Borders.LineStyle = xlNone '清除汇总表原来的边框线
[a1].CurrentRegion.Offset(2).ClearContents '清除汇总表原来的数据,而不清除格式,如果是clear则及清除内容也清除格式
[a3].Resize(n, 8) = arr '把arr数组赋值给单元格区域
[a3].Resize(n, 8).Borders.LineStyle = xlContinuous '添加边框线
MsgBox "汇总了" & m & "个文件" & n & "行数据" '信息提示框
Application.ScreenUpdating = True '恢复屏幕刷新
End Sub
|
|