¿Exactamente qué necesitas?.
Concatenar campos es sencillo, se trata de juntar en un único resultado (una variable por ejemplo) los datos de un mismo campo de un recordset (que puede ser una tabla o consulta y que puede tener o no tener condiciones).
Por ejemplo una función que permita agrupar por el campo y contar los que se repiten.
Se le indica el campo a agrupar, la tabla a la que pertenece y admite una condicion a cumplir:
Public Function Concatena(Una_Tabla As String, Un_Campo As String, Una_Condicion As String) As String
Dim Tem_Recordset As DAO.Recordset, Temp_Sql As String, Actual As String, Cuenta As Long
Temp_Sql = "Select " & Un_Campo & " from " & Una_Tabla
If Una_Condicion <> "" Then Temp_Sql = Temp_Sql & " Where " & Una_Condicion
Temp_Sql = Temp_Sql & " order by " & Un_Campo
Set Tem_Recordset = CurrentDb.OpenRecordset(Temp_Sql, , dbReadOnly)
If Tem_Recordset.RecordCount = 0 Then Exit Function
With Tem_Recordset
.MoveLast: .MoveFirst
Actual = .Fields(0)
Do Until .EOF
If Actual <> .Fields(0) Then
If Len(Concatena) <> 0 Then Concatena = Concatena & ", "
Concatena = Concatena & .Fields(0) & "= " & Cuenta
Actual = .Fields(0)
Cuenta = 0
End If
Cuenta = Cuenta + 1
.MoveNext
Loop
.Close
End With
Set Tem_Recordset = Nothing
End Function
Devuelve en una línea y separados por comas, el valor del campo y la cuenta de sus repeticiones
Se puede modificar para crear una tabla que devuelve en un campo el dato y en otro la cuenta de sus repeticiones .