The requirement to pull the first Open and last Close for each ticket, compute change and percentage, as well as total vol at the same time, complicates the process. This is a method that makes advantage of recordset loops. Suppose that the rows are already sorted by ticket and date and that the dataset is just for one year. I choose not to use the annoying angle brackets found in field headers. I suggest you take them out.
Sub AggData()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strT As String, dblOpen As Double, dblClose As Double, lngTot As Long, x As Integer, r As Integer, booEnd As Boolean
cn.Open "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";HDR=Yes';"
rs.Open "SELECT * FROM [Sheet2$]", cn, adOpenStatic, adLockOptimistic
strT = rs!Ticker
x = 1
r = 2
Do While Not rs.EOF
If strT = rs!Ticker Then
If x = 1 Then dblOpen = rs!Open Else dblClose = rs!Close
lngTot = lngTot + rs!Vol
x = x + 1
rs.MoveNext
If rs.EOF Then booEnd = True
Else
booEnd = True
End If
If booEnd Then
Debug.Print strT & "," & dblOpen & "," & dblClose & "," & lngTot
Sheets("Sheet1").Cells(r, 9).Value = strT
Sheets("Sheet1").Cells(r, 10).Value = dblClose - dblOpen
Sheets("Sheet1").Cells(r, 11).Value = Round((dblClose - dblOpen) / dblOpen, 2)
Sheets("Sheet1").Cells(r, 12).Value = lngTot
r = r + 1
booEnd = False
If Not rs.EOF Then strT = rs!Ticker
lngTot = 0
x = 1
End If
Loop
End Sub