Код:

Sub Sample()
Dim objConnection As Object
Dim objRecordSet As Object
Dim objWorksheet As Worksheet
Dim objRange As Range
Dim i As Integer
Set objConnection = CreateObject("ADODB.Connection")
With objConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""
.Open
End With
Set objRecordSet = objConnection.Execute( _
"SELECT FIRST(Имя) AS Имя, FIRST(Фамилия) AS Фамилия, " & _
"COUNT([Мероприятие 1]) AS [Мероприятие 1], " & _
"COUNT([Мероприятие2]) AS [Мероприятие 2], " & _
"COUNT([Мероприятие 3]) AS [Мероприятие 3], " & _
"COUNT([Мероприятие 4]) AS [Мероприятие 4] " & _
"FROM [Sheet1$] " & _
"GROUP BY Имя, Фамилия ORDER BY Фамилия, Имя" _
)
Set objWorksheet = ThisWorkbook.Worksheets.Add()
Set objRange = objWorksheet.Range("A1")
With objRecordSet
.MoveFirst
For i = 0 To .Fields.Count - 1
objRange.Offset(0, i).Value = .Fields.Item(i).Name
Next
Do Until .EOF
Set objRange = objRange.Offset(1, 0)
For i = 0 To 1
objRange.Offset(0, i).Value = .Fields.Item(i).Value
Next
For i = 2 To .Fields.Count - 1
If .Fields.Item(i).Value Then
objRange.Offset(0, i).Value = "Да"
End If
Next
.MoveNext
Loop
End With
objWorksheet.Columns("A:F").AutoFit
Set objRange = Nothing
Set objWorksheet = Nothing
objRecordSet.Close
objConnection.Close
Set objRecordSet = Nothing
Set objConnection = Nothing
End Sub