Sub Extract()
Dim Centre$
Dim iRowData&, eRowData&, n&
Dim key As Variant
Dim cell As Range, rngData As Range
Dim dictCentre As Object
Dim wsData As Worksheet, wsResult As Worksheet
Dim wb As Workbook
Application.ScreenUpdating = False
Set wb = ActiveWorkbook
Set wsData = wb.Sheets("Data")
Set wsResult = wb.Sheets("Result")
Set dictCentre = CreateObject("Scripting.Dictionary")
iRowData = 12
eRowData = wsData.Range("A" & iRowData).End(xlDown).Row
Set rngData = wsData.Range("A" & iRowData, "A" & eRowData)
' Store all Center names
For Each cell In rngData
Centre = cell.Offset(0, 9)
If Not dictCentre.Exists(Centre) Then
dictCentre.Add Centre, Centre
End If
Next
' Write Result for each Centre
n = 6
For Each key In dictCentre.Keys
wsResult.Range("A" & n) = UCase(key)
n = n + 1
For Each cell In rngData
If cell.Offset(0, 9) = key Then
wsData.Range("A" & cell.Row, "I" & cell.Row).Copy
wsResult.Range("A" & n).PasteSpecial (xlPasteValuesAndNumberFormats)
n = n + 1
End If
Next
n = n + 1
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub