Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim ori(), dest(), Init As String, i As Long
Dim j As Long, k As Long, N As Long
Dim i11 As Long, i12 As Long, i21 As Long, i22 As Long
If Len(Sh.Name) <> 1 Then Exit Sub
Init = Sh.Name & "*"
With Sheets("test")
ori = Application.WorksheetFunction.Transpose _
(.Range("1:1").CurrentRegion.Value)
i11 = LBound(ori, 1): i12 = UBound(ori, 1)
i21 = LBound(ori, 2): i22 = UBound(ori, 2)
End With
ReDim dest(i11 To i12, i21 To i22)
N = i21 - 1
For i = i21 To i22
If ori(2, i) Like Init Then
N = N + 1
For j = i11 To i12
dest(j, N) = ori(j, i)
Next j
End If
Next i
With Sh
.Cells.Clear
If N > i21 - 1 Then
ReDim Preserve dest(i11 To i12, i21 To N)
.Range("A1").Resize(N - i21 + 1, i12 - i11 + 1).Value _
= Application.WorksheetFunction.Transpose(dest)
Sheets("test").Range("1:" & i12).Copy
.Range("A1").CurrentRegion.PasteSpecial xlPasteFormats
.Range("A1").CurrentRegion.PasteSpecial xlPasteColumnWidths
.Range("A1").Select
End If
End With
End Sub