将第一个空单元格中的多个工作表的范围复制到一个工作表中

所以我想要做的是如下:

我有一个工作手册,其中包含2个工作表,其中包含一般信息,30个工作表,包含学生信息(学号,姓名,成绩,最终工作组平均数),以及总览表(“Overzicht-OSC”)。

我想要做的只是复制学生人数(C列)和最终的工作组平均值(L列),并将这些值粘贴在我的概览表(“Overzicht-OSC”)中。 所有工作组最多包含25名学生; 往往更less,而且每个组的数量都不相同。 所以我想要粘贴第一组(在表3)中的数字在“Overzicht-OSC”,然后粘贴第二组(在表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 

但它不工作! 我不断收到各种错误信息。 随着上面写的版本,我得到'粘贴特殊方法的范围类失败'。

当我把'ActiveCell.PasteSpecial'改成'Selection.PasteSpecial'时,我得到'这个select是无效的。 确保复制和粘贴区域不重叠,除非它们的大小和形状相同。

我以前也尝试过不同的代码:

 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 

这不会给出错误消息,但也不起作用。

我应该如何解决这个问题?

您不是在代码中的任何位置引用表单,并且不build议使用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