標題:
利用陣列來複製貼上??
[打印本頁]
作者:
jasonwu0114
時間:
2014-2-21 10:25
標題:
利用陣列來複製貼上??
假如有A1~50個檔案
要複製每個檔案的RANGE(“A1:C20”)再加上一列D1~20=X
然後插入到B工作簿range(“A1”)
如果一個一個用copy-> insert方式EXCEL會出現錯誤(執行階段錯誤’1004’ 為避免資料遺失,EXCEL無法將空白儲存格移出工作表……….)
如果利用陣列方式
將50個檔案資料寫入陣列再一次貼到檔案B
請問要如何寫???
謝謝
作者:
GBKEE
時間:
2014-2-21 12:26
回復
1#
jasonwu0114
假如有A1~50個
檔案 (還是工作表 )
要複製每個檔案的RANGE(“A1:C20”)再加上一列
D1~20=X 什麼意思
=>
要複製 A1:D20 對嗎?
作者:
jasonwu0114
時間:
2014-2-21 13:11
本帖最後由 jasonwu0114 於 2014-2-21 13:12 編輯
回復
2#
GBKEE
假如有A1~50個檔案 (還是工作表 )
有50個workbooks(A1).sheet("工作表1"),workbooks(A2).sheet("工作表1")...........................
要複製每個檔案的RANGE(“A1:C20”)再加上一列D1~20=X 什麼意思
=>要複製 A1:D20 對嗎?
A1:C20是工作表內資料
想要在每一 列後面加上一欄日期(EX:2014/02/21)
變成A1:D20
麻煩GBKEE了
謝謝
作者:
jasonwu0114
時間:
2014-2-27 10:44
有高手可以幫忙嗎
感恩
作者:
Hsieh
時間:
2014-2-27 11:30
回復
3#
jasonwu0114
先用同一檔案2個工作表,寫入第3工作表示範
Sub ex()
Dim ar(), Ay(1 To 20, 1 To 4)
For i = 1 To 2
With Sheets(i)
For j = 1 To 20
For k = 1 To 3
Ay(j, k) = .Cells(j, k).Value
Next
Ay(j, 4) = Date
ReDim Preserve ar(s)
ar(s) = Application.Index(Ay, j)
s = s + 1
Next
Erase Ay
End With
Next
Sheets(3).[A1].Resize(s, 4) = Application.Transpose(Application.Transpose(ar))
End Sub
複製代碼
作者:
GBKEE
時間:
2014-2-27 11:51
回復
5#
Hsieh
Option Explicit
'將50個檔案資料寫入陣列再一次貼到檔案B
Sub Ex()
Dim Wb(1 To 2) As Workbook, AR(), S As Integer, E As Range
Set Wb(1) = Workbooks("檔案B") '更正為檔案B的名稱
For Each Wb(2) In Workbooks '50個檔案已開啟 含 檔案B
If Wb(2).Name <> Wb(1).Name Then
For Each E In Wb(2).Sheets(1).[A1:C20].Rows
ReDim Preserve AR(1 To 4, 0 To S)
AR(1, S) = E.Cells(1)
AR(2, S) = E.Cells(2)
AR(3, S) = E.Cells(3)
AR(4, S) = Date
S = S + 1
Next
End If
Next
With Wb(1).Sheets(1).[a1] '檔案B
.CurrentRegion = ""
.Resize(S, 4) = Application.WorksheetFunction.Transpose(AR)
End With
End Sub
複製代碼
作者:
jasonwu0114
時間:
2014-2-27 16:48
回復
5#
Hsieh
非常感謝
研究中
另外想請教
ar(s) = Application.Index(Ay, j)
Application.Transpose(Application.Transpose(ar))
這2行的意思是???
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)