|
发表于 2012-2-7 08:57
|
显示全部楼层
本楼为最佳答案
- Sub lt() '获取炼铁数据
- On Error Resume Next
- Application.ScreenUpdating = False
- Dim zb As Workbook
- Dim Shname As String, str As Date
- Dim i As Long, j As Long
- Dim arr, arr1
- Dim Ro As Long, Co As Long
- Set zb = GetObject(ThisWorkbook.Path & "\2012年3月各单位报表\2012年3月.xls") '查找计算机内文件名为数据表.xls的工作薄,故xb定义为工作薄形式'
- Shname = Cells(2, 15).Value
- str = Cells(2, 4)
- arr = zb.Sheets(Shname).Range("A4:BW" & [A65536].End(xlUp).Row) '将2012年3月表中的统计表数据赋值给数组
- ReDim arr1(1 To 5, 1 To 18)
- For i = 1 To UBound(arr) '在数组arr中循环找出对应的日期
- If arr(i, 1) = str Then
- For j = 4 To UBound(arr, 2) '循环对找出日期对应的行的数据处理
- Ro = Int((j - 4) / 18) + 1
- Co = (j - 4) Mod 18 + 1
- arr1(Ro, Co) = arr(i, j) '生成1-4号高炉数据到数组arr1中
- Next j
- Exit For
- End If
- Next i
- For i = 1 To 18 '求和循环
- For j = 1 To 4
- arr1(5, i) = arr1(5, i) + arr1(j, i)
- Next j
- Next i
- zb.Close False
- Range("E15:V19") = arr1
- Application.ScreenUpdating = True
- End Sub
复制代码 |
|