- 帖子
- 40
- 主題
- 10
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- winxp
- 軟體版本
- office2003
- 閱讀權限
- 20
- 註冊時間
- 2011-6-3
- 最後登錄
- 2020-10-1
|
2#
發表於 2011-8-22 15:16
| 只看該作者
sFName = "C:\資料庫\" & tdate & "月\" & stcok & "" & fdate & ".xls" ' 指定查找檔案路徑目錄"
Workbooks.Open Filename:=sFName, ReadOnly:=True ' 開檔
p = Sheets.Count
Do
With Sheets(p)
n = .[A65536].End(xlUp).Row
arr = .Range(.[A1], .Cells(n, 6))
ReDim arr2(1 To 5, 1 To UBound(arr)) '在程序層次中用來重新配置動態陣列變數的儲存空間
Set d = CreateObject("scripting.dictionary")
For i = 2 To n
chk = Mid(arr(i, 1), 1, 3)
If stcode = chk Then
x = arr(i, 4) - arr(i, 5)
b = Array(arr(i, 1), arr(i, 2), arr(i, 4), arr(i, 5), x)
If Not d.exists(arr(i, 1)) Then
M = M + 1
d(arr(i, 1)) = M
For j = 1 To 5
arr2(j, M) = b(j - 1)
Next
Else
For j = 3 To 5
arr2(j, d(arr(i, 1))) = arr2(j, d(arr(i, 1))) + b(j - 1)
Next
End If
Else
End If
Next
End With
On Error Resume Next
irow = wbook.[A65536].End(xlUp).Row
wbook.Range("A" & irow + 1).Resize(M, 5) = Application.Transpose(arr2)
p = p - 1: M = 0
Loop While p > 0
Application.DisplayAlerts = False
ActiveWorkbook.Close SaveChanges:=False
Sheets("Web").Activate
n = [A65536].End(xlUp).Row
arr = Range([A2], Cells(n, 6))
ReDim arr2(1 To 5, 1 To UBound(arr)) Set d = CreateObject("scripting.dictionary")
For i = 2 To n
b = Array(arr(i, 1), arr(i, 2), arr(i, 3), arr(i, 4), arr(i, 5))
If Not d.exists(arr(i, 1)) Then
M = M + 1
d(arr(i, 1)) = M
For j = 1 To 5
arr2(j, M) = b(j - 1)
Next
Else
For j = 3 To 5
arr2(j, d(arr(i, 1))) = arr2(j, d(arr(i, 1))) + b(j - 1)
Next
End If
Next
Range("g1").Resize(M, 5) = Application.Transpose(arr2)
目前必須把各工作表處理完的資料放到sheet("web")的工作表,再處理一次
請問如何處理一次就好,對於陣列資料真的很頭痛,感謝大大能幫我解惑!謝謝善心人士. |
|