Amigo, lo que pasa es que en cada iteración del ciclo for metes el valor de la celda en la misma variable, haz el ciclo For solo para las filas del StringGrid y guardas las columnas en otras variables. Por ejemplo:
Suponiendo que el StringGrid se llama Grid y tiene 8 columnas llamadas Var1, Var2... hasta Var8 y variables string con el mismo nombre harías esto
Código Delphi
[-]
for i:= 1 to Grid.RowCount - 1 do begin
Var1:= Grid.Cells[0, i];
Var2:= Grid.Cells[1, i];
...
end;
Asi de simple