Welcome to the forum! Your post is just fine.
When testing code, always test on a backup copy of the file or other backups as needed.
Play Main() with the sheet of interest selected or active.
Add the Microsoft Scripting Runtime in Tools > References as commented.
In a Module:
Sub Main()
Dim a() As String, aa() As Variant, b As Variant, c As Variant
Dim cr As Range, i As Long
For Each cr In Range("C1", Range("C" & Rows.Count).End(xlUp))
With cr
a() = Split(.Value, "; ")
aa() = sA1dtovA1d(a())
b = UniqueArrayByDict(aa)
c = b
For i = LBound(b) To UBound(b)
c(i) = CountSstrings(a(), CStr(b(i))) & " " & b(i)
Next i
.Value = Join(c, "; ")
End With
Next cr
'Debug.Print CountSstrings(a(), a(0)), UBound(aa) + 1
'Debug.Print UBound(b) + 1
End Sub
'Compare options: vbDataBaseCompare, vbTextCompare, and default vbBinaryCompare
Function CountSstrings(s() As String, ss As String, _
Optional mode As Integer = vbBinaryCompare) As Long
Dim i As Long, ii As Long
For ii = LBound(s) To UBound(s)
If ss = s(ii) Then i = i + 1
Next ii
CountSstrings = i
End Function
' Early Binding method requires Reference: MicroSoft Scripting Runtime, scrrun.dll
' Compare options: vbDataBaseCompare, vbTextCompare, and default vbBinaryCompare
Function UniqueArrayByDict(Array1d() As Variant, Optional compareMethod As Integer = 0) As Variant
'Dim dic As Object 'Late Binding method - Requires no Reference
'Set dic = CreateObject("Scripting.Dictionary") 'Late or Early Binding method
Dim dic As Dictionary 'Early Binding method
Set dic = New Dictionary 'Early Binding Method
Dim e As Variant
dic.CompareMode = compareMethod
'BinaryCompare=0
'TextCompare=1
'DatabaseCompare=2
For Each e In Array1d
If Not dic.Exists(e) Then dic.Add e, Nothing
Next e
UniqueArrayByDict = dic.Keys
End Function
Function RangeTo1dArray(aRange As Range) As Variant
Dim a() As Variant, c As Range, i As Long
ReDim a(0 To aRange.Cells.Count - 1)
i = i - 1
For Each c In aRange
i = i + 1
a(i) = c
Next c
RangeTo1dArray = a()
End Function
Function sA1dtovA1d(strArray() As String) As Variant
Dim varArray() As Variant, i As Long
ReDim varArray(LBound(strArray) To UBound(strArray))
For i = LBound(strArray) To UBound(strArray)
varArray(i) = CVar(strArray(i))
Next i
sA1dtovA1d = varArray()
End Function