![](/img/trans.png)
[英]Copy same non contiguous data at same cell address from multiple worksheets and paste in one master worksheet
[英]Copy ranges from multiple worksheets into one worksheet, in first empty cell
所以我想做的如下:
我有一個工作簿,其中包含2個具有常規信息的工作表,然后是30個具有學生信息(學生人數,姓名,成績,最終工作組平均值)的工作表,然后是概述表(“ Overzicht-OSC”)。
我只想復制學生人數(在C列中)和最終工作組平均值(在L列中),然后將這些值粘貼到我的概覽表中(“ Overzicht-OSC”)。 所有工作組最多包含25名學生; 通常更少,並且每組的數量各不相同。 因此,我要在“ Overzicht-OSC”中粘貼第一組(在工作表3中)的編號,然后在該信息下粘貼第二組(在工作表4中)的編號,以此類推。在最終概述中,只會是學生人數和成績,跳過空白單元格。
我為此編寫了以下代碼:
Sub Overview()
Dim I As Integer
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String
For I = 3 To 32
Range("B8:B34,L8:L34").Copy
Sheets("Overzicht-OSC").Select
sourceCol = 1
rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row
For currentRow = 1 To rowCount
currentRowValue = Cells(currentRow, sourceCol).Value
If IsEmpty(currentRowValue) Then
Cells(currentRow, sourceCol).Select
Exit For
End If
Next
ActiveCell.PasteSpecial Paste:=xlPasteValues
Next I
End Sub
但這行不通! 我不斷收到各種錯誤消息。 使用上述版本,我得到“ Range類的PasteSpecial方法失敗”。
當我將“ ActiveCell.PasteSpecial”更改為“ Selection.PasteSpecial”時,我得到“此選擇無效。 確保復制和粘貼區域不重疊,除非它們的大小和形狀相同。
我以前也嘗試過其他代碼:
Sub Overzicht2()
Dim I As Integer
For I = 3 To 32
Range("C8:C34,L8:L34").Select
Selection.Copy
Sheets("Overzicht-OSC").Select
Application.Goto Cells(Rows.Count, "A").End(xlUp).Offset(1), Scroll:=True
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Next I
End Sub
這不會給出錯誤消息,但是也無法正常工作。
我該如何解決?
您沒有在代碼中的任何地方引用工作表,因此不建議使用ActiveCell,因為尚不清楚哪個單元格處於活動狀態。 也許這會奏效,盡管我也很警惕使用工作表索引,因為可以輕松更改-最好使用工作表名稱或代碼名稱。
Sub Overzicht2()
Dim I As Long
For I = 3 To 32
Sheets(I).Range("C8:C34,L8:L34").Copy
Sheets("Overzicht-OSC").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next I
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.