Thanks for you help.
After running the code, my table looks like:
RecordID NormalizedField
1 03 04 05
2 03 07 20 05
3 03 06 07
Is this correct?
Should it have broken each value out into a new field?
Thanks for the help
Simon
pietlinden@hotmail.com wrote:[color=blue]
> Normalize
>
> Create a second table. Something like:
>
> CREATE TABLE tblNormalized(
> RecordID Autonumber,
> NormalizedField Text(255)
> );
>
> Normalize your data... copy this into a module and run it...
>
> Option Compare Database
>
> Public Sub NormalizeTable()
> Dim rsRead As DAO.Recordset
> Dim rsWrite As DAO.Recordset
> Dim varValues As Variant
> Dim intCounter As Integer
>
> Set rsRead = CurrentDb.OpenRecordset("tblDenormalized",
> dbOpenTable, dbOpenForwardOnly)
> Set rsWrite = CurrentDb.OpenRecordset("tblNormalized", dbOpenTable)
>
> Do Until rsRead.EOF
> varValues = Split(rsRead.Fields("FieldToParse"), ",")
> For intCounter = 0 To UBound(varValues)
> rsWrite.AddNew
> rsWrite.Fields("RecordID") = rsRead.Fields("RecordID")
> rsWrite.Fields("NormalizedField") =
> Trim$(varValues(intCounter))
> rsWrite.Update
> Next intCounter
> rsRead.MoveNext
> Loop
>
> rsRead.Close
> rsWrite.Close
> Set rsRead = Nothing
> Set rsWrite = Nothing
> MsgBox "done"
> End Sub
>
> then create a query like this:
>
> SELECT tblNormalized.NormalizedField, Count(tblNormalized.RecordID) AS
> CountOfRecordID
> FROM tblNormalized
> GROUP BY tblNormalized.NormalizedField
> ORDER BY tblNormalized.NormalizedField;
>
> and that's it.[/color]