Text-to-columns is indeed an effective method. However, you can use
formulas to make this dynamic. This assumes you have at least one
space.
Assume your data is in column A, and row 1 contains headers.
B1: =LEFT($A2,FIND(" ",$A2,1)-1)
C1: =IF(LEN($A2)-LEN(SUBSTITUTE($A2,"
",""))<(COLUMN()-2),"",IF(LEN($A2)-LEN(SUBSTITUTE($A2,"
",""))<(COLUMN()-1),RIGHT($A2,LEN($A2)-FIND(CHAR(200),SUBSTITUTE($A2,"
",CHAR(200),LEN($A2)-LEN(SUBSTITUTE($A2,"
",""))))),MID($A2,FIND(CHAR(200),SUBSTITUTE($A2,"
",CHAR(200),COLUMN()-2))+1,FIND(CHAR(200),SUBSTITUTE($A2,"
",CHAR(200),COLUMN()-1))-FIND(CHAR(200),SUBSTITUTE($A2,"
",CHAR(200),COLUMN()-2))-1)))
Copy the formula in C1 as far over to the right as you expect to have
spaces. Next, copy down as far as you need to go to accomodate your
data. It relies on column C being the value between 1st and 2nd
space; if there is no third space, it will return the characters to
the right of the first space if there is no second space, and
analogously for later spaces.
For 50,000 rows and accounting for up to 7 spaces, this took well
under 10 seconds to calculate in Excel 2007. Maximum number of
function nesting is 6, so this should work in earlier versions of
Excel. Finally, the C1 formula assumes that none of your strings will
have the È character, which has the ASCII code of 200.
Hope that's useful.