不晓得字典,那就改一下:
Sub test()
Dim d , ar1(), ar2(), artmp(), sht As Worksheet
Set d = CreateObject("scripting.Dictionary")
shtc = Worksheets.Count
ReDim ar2(1 To 30000, 1 To 26)
artmp = Sheet1.[a1:y1].Value
For Each sht In Worksheets
If sht.Name <> "成绩单" Then
i% = sht.[a65536].End(xlUp).Row
ar1 = sht.Range("a2:y" & i).Value
t = t% + 1
For i = 1 To UBound(ar1)
If Not d.Exists(ar1(i, 1)) Then d(ar1(i, 1)) = d.Count * shtc + 1
For i2 = 1 To 25
If t = 1 Then ar2(d(ar1(i, 1)), i2) = artmp(1, i2)
ar2(d(ar1(i, 1)) + t, i2) = ar1(i, i2)
Next
ar2(d(ar1(i, 1)) + t, 26) = sht.Name
Next
End If
Next
Sheets("成绩单").Cells.Clear
Sheets("成绩单").[a1].Resize(d.Count * shtc + t, 26) = ar2
End Sub