Board logo

標題: [發問] 想在不同的檔案中,捉取不同sheet中相同位置的資料,有機會實現嗎? [打印本頁]

作者: chres    時間: 2014-1-16 22:31     標題: 想在不同的檔案中,捉取不同sheet中相同位置的資料,有機會實現嗎?

想請教各位先進,在整理資料時,需要將檔案中的欄位"B"、"C"、"D"、"P"、"Z"、"AJ"、"AT"、
"BL"、"BM"、"BP"、"BQ"、"BR"、"CM"、"CW"、"DG"、"EB"、"EC"等17行的資料複製儲存格的數值
(有些是公式算出來的),取樣的範圍是在13列到268列,並貼到別一個新的SHEET內去做進一步資料運算,
我先前是用錄製巨集的方式來做,但是因為每次的Sheet名稱都不相同,所以要一直去改巨集資料,
若想每次在不同的檔案中,提取sheet內的資料(sheet名稱也會變),但位置都是在第五sheet開始,
且若有多個sheet,資料要依序排列複製,並在新sheet內依序貼上,不知是否有機會實現??謝謝!!
作者: Hsieh    時間: 2014-1-16 23:16

回復 1# chres
  1. Sub ex()
  2. Dim Ay(), Sh As Worksheet
  3. ar = Array("B", "C", "D", "P", "Z", "AJ", "AT", "BL", "BM", "BP", "BQ", "BR", "CM", "CW", "DG", "EB", "EC")
  4. Set Sh = Sheets.Add(after:=Sheets(Sheets.Count))
  5. For i = 5 To 6
  6. With Sheets(i)
  7.   For j = 0 To UBound(ar)
  8.     ReDim Preserve Ay(s)
  9.     Ay(s) = Application.Transpose(.Range(ar(j) & 13 & ":" & ar(j) & 268))
  10.     s = s + 1
  11.   Next
  12.   Sh.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(256, UBound(ar) + 1) = Application.Transpose(Ay)
  13.   s = 0
  14.   Erase Ay
  15. End With
  16. Next
  17. Sh.Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  18. Set Sh = Nothing
  19. End Sub
複製代碼

作者: chres    時間: 2014-1-17 15:20

回復 2# Hsieh

謝謝H大,這個巨集在單檔案中可以執行,沒有問題,
若是不同檔案名稱的話,是不是我要在程式前面加上
workbooks("xxx.xls").activate 呢?不過好像每次都要改就是了~~
另外若要從第6列開始貼上資料,應該在那裡做調整呢?謝謝!!
作者: GBKEE    時間: 2014-1-20 11:23

回復 3# chres
若要從第6列開始貼上資料,7到12列是合併的儲存格資料會失真

使用不同檔案名稱,修改如下
  1. Option Explicit
  2. Sub ex()
  3. Dim Ay(), Sh As Worksheet, Ar, I As Integer, J As Integer, S As Integer
  4. Dim WB As Workbook
  5. Set WB = ActiveWorkbook              '作用中的活頁簿
  6. 'Set WB = Workbooks("A.xls")           '指定的活頁簿

  7. Ar = Array("B", "C", "D", "P", "Z", "AJ", "AT", "BL", "BM", "BP", "BQ", "BR", "CM", "CW", "DG", "EB", "EC")
  8. Set Sh = WB.Sheets.Add(after:=Sheets(Sheets.Count))
  9. For I = 5 To 6
  10. With WB.Sheets(I)
  11.   For J = 0 To UBound(Ar)
  12.     ReDim Preserve Ay(S)
  13.     Ay(S) = Application.Transpose(.Range(Ar(J) & 13 & ":" & Ar(J) & 268))
  14.     S = S + 1
  15.   Next
  16.   Sh.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(256, UBound(Ar) + 1) = Application.Transpose(Ay)
  17.   S = 0
  18.   Erase Ay
  19. End With
  20. Next
  21. Sh.Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  22. Set Sh = Nothing
  23. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)