Board logo

標題: 利用陣列來複製貼上?? [打印本頁]

作者: 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工作表示範
  1. Sub ex()
  2. Dim ar(), Ay(1 To 20, 1 To 4)
  3. For i = 1 To 2
  4. With Sheets(i)
  5. For j = 1 To 20
  6.   For k = 1 To 3
  7.      Ay(j, k) = .Cells(j, k).Value
  8.   Next
  9.   Ay(j, 4) = Date
  10. ReDim Preserve ar(s)
  11. ar(s) = Application.Index(Ay, j)
  12. s = s + 1
  13. Next
  14. Erase Ay
  15. End With
  16. Next
  17. Sheets(3).[A1].Resize(s, 4) = Application.Transpose(Application.Transpose(ar))
  18. End Sub
複製代碼

作者: GBKEE    時間: 2014-2-27 11:51

回復 5# Hsieh
  1. Option Explicit
  2. '將50個檔案資料寫入陣列再一次貼到檔案B
  3. Sub Ex()
  4.     Dim Wb(1 To 2) As Workbook, AR(), S As Integer, E As Range
  5.     Set Wb(1) = Workbooks("檔案B")  '更正為檔案B的名稱
  6.     For Each Wb(2) In Workbooks  '50個檔案已開啟 含 檔案B
  7.         If Wb(2).Name <> Wb(1).Name Then
  8.         For Each E In Wb(2).Sheets(1).[A1:C20].Rows
  9.             ReDim Preserve AR(1 To 4, 0 To S)
  10.             AR(1, S) = E.Cells(1)
  11.             AR(2, S) = E.Cells(2)
  12.             AR(3, S) = E.Cells(3)
  13.             AR(4, S) = Date
  14.             S = S + 1
  15.         Next
  16.         End If
  17.     Next
  18.     With Wb(1).Sheets(1).[a1]  '檔案B
  19.         .CurrentRegion = ""
  20.         .Resize(S, 4) = Application.WorksheetFunction.Transpose(AR)
  21.     End With
  22. 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/)