|    | 
     こんなのでは? 
 
Option Explicit 
 
Public Sub Sample() 
 
  Dim i As Long 
  Dim lngRows As Long 
  Dim wksList As Worksheet 
  Dim wksResult As Worksheet 
  Dim lngTop As Long 
  Dim lngCount As Long 
  Dim strProm As String 
 
  Set wksList = Worksheets("Sheet1") 
 
  '仮にデータの在るシートと同じにしておく 
  Set wksResult = wksList 
   
  '行位置の取得 
  lngRows = wksList.Cells(Rows.Count, "A").End(xlUp).Row 
   
  '画面更新を停止 
  Application.ScreenUpdating = False 
   
  With wksList 
    '日付先頭位置を初期値に 
    lngTop = 1 
    '同一日付のカウントを初期化 
    lngCount = 1 
    '日付列に就いて繰り返し 
    For i = 2 To lngRows + 1 
      '日付先頭と日付が違うなら 
      If .Cells(lngTop, "A").Value <> .Cells(i, "A").Value Then 
        '出力シートを取得 
        GetSheet wksResult 
        '日付を転記 
        wksResult.Cells(1, "A").Value = .Cells(lngTop, "A").Value 
        '名前を転記 
        .Cells(lngTop, "B").Resize(lngCount).Copy _ 
            Destination:=wksResult.Cells(2, "A") 
        '日付先頭位置を更新 
        lngTop = i 
        '同一日付のカウントを初期化 
        lngCount = 1 
      Else 
        '同一日付のカウントを更新 
        lngCount = lngCount + 1 
      End If 
    Next i 
  End With 
   
  strProm = "処理が完了しました" 
    
Wayout: 
 
  '画面更新を再開 
  Application.ScreenUpdating = True 
   
  Set wksList = Nothing 
  Set wksResult = Nothing 
    
  MsgBox strProm, vbInformation 
      
End Sub 
 
Private Sub GetSheet(wksMark As Worksheet) 
 
  Dim i As Long 
   
  On Error GoTo ErrorHandler 
     
  For i = 1 To Worksheets.Count 
    If wksMark.Name = Worksheets(i).Name Then 
      Exit For 
    End If 
  Next i 
       
  Set wksMark = Worksheets(i + 1) 
   
  wksMark.UsedRange.ClearContents 
   
  Exit Sub 
   
ErrorHandler: 
   
  Set wksMark = Worksheets.Add(After:=wksMark) 
 
End Sub 
 
 | 
     
    
   |