Yup, that was going to be my next question, is how many different values we were talking about.
OK, so the way to do it is like this. I'll stick with the colors example, just substitute as necessary, and I'll call the original table 'original'. You'll need to run some manual queries in your MySQL client (probably phpMyAdmin).
As Troester said, first thing is BACK UP YOUR TABLES!
Create your new table, either in Fabrik (create a list) or in your MySQL client. Make sure it has an auto incrementing primary key, 'id' (which will happen automatically if you create it in Fabrik) and a field for 'color'. So at the very least you have two fields in the new 'colors' table ... id and color. The 'color' field must obviously be the same type (probaby VARCHAR) as the original field.
Create the new rows in the colors table by running this:
INSERT INTO colors (color) SELECT DISTINCT color FROM original
That should create one row for each distinct color used in original. So if you have 1000 rows in original which between them use 200 different colors, you'll have 200 rows in in color. If they were only chosen from 5 colors, you'll have 5 rows. if every row had a different color, you'll have 1000 rows.
Now we have to change the 'color' on the original table to be a foreign key pointing to the relevant row in the colors table. To be safe, we'll do this by setting a temporary copy of the field. So create a new field on 'original' called color_2, making it an INT (unsigned). You don't have to do that in Fabrik, just create it in MySQL, we're going to get rid of it soon.
Then run this query:
UPDATE original LEFT JOIN colors ON color.color = original.color SET original.color_2 = color.id
That will set color_2 to the id of the corresponding row in colors.
Sanity check this. Examine lots of example rows, and make sure color_2 does indeed have the right value in it, matching the color in the colors table.
Now either drop the original color field, or rename it to color_3 (if youw ant to be extra safe and keep it in case we messed up).
Rename the color_2 field we created to just 'color', so it is now the "real" field.
Go in to Fabrik, and change the 'color' element to be a join to the new colors table, using 'id' as the value, and 'color' as the label.
-- hugh