Excel won't sort numbers correctly

M

martin0642

Hi all, bit of a weird one this....

Ok - so I have a large-ish dataset with several columns, one of whic
is the client number. This dataset is copied and pasted from and Exce
spreadsheet that contains macros...as well as lots of fancy header row
and other stuff I dont need for analysis. Hence I copy and paste jus
the data and the main header row into a new workbook to manipulate i
and then transfer to other programs for analysis.

The problem is this: The client number column goes from 01 to 685.
need to add in extra info based on the individuals client number. Th
easiest way to do this is to sort on the client number column (and ye
I do select all and then use "data - sort" from the menus)

Thing is..even though I make sure the cells in this column ar
formatted as numbers Excel simply wont sort them sensibly. As a
example, the latest dataset im using..AFTER sorting takes this order:
8
24
31
55
55
95
205
228
284
298
685
01
01
01

From here on it sorts on the first digit of the numbers. So I get al
the 01, 01, 03 etc, then 10's, 100's etc then 20's, 200's and so on.

Any clues why its doing this? I cant find values in there that aren
numbers, I've looked for random spaces or other characters in eac
cell, I've also made absolutely sure that the cells are formatted a
numbers. The datasets will start to grow so I need to get this sorte
as eventually it will become unworkable to autofill my new column base
on client numbers.

AAAAAAAAAAAAAAAAAAAAAH!
THanks - i feel better for sharing :rolleyes
 
A

Arvi Laanemets

Hi

Your "numbers" there are text strings, and are sorted as text, i.e. "2" >
"12", because first are checked ASCII values of 1st characters, and unless
they are equal, the result is returned immediately. To get all entries
sorted as numbers, you have to convert them to numbers, or you have to
modify them so, that they all are equal length - padded with 0's. I.e. "002"
< "012".

When you had numbers as text strings, and formatted the range as numbers, it
isn't enough - for Excel they remain strings. To convert truly:
- format the range with numeric strings as Number or General;
- enter number 1 into some free cell, and copy it;
- select the range with strings, and PasteSpecial>Multiply;
- delete the number 1, you entere before.

To modify existing strings to same length:
- determine the length of longest string (let it be n);
- into some free column, enter the formula (I assume your numeric
strings are in column A) like
=IF(TRIM(A2)="";"";RIGHT(REPT("0",n) & TRIM(A2),n))
, and copy it down for same amount of rows, as are data in column A;
- select the renge with formulas, and copy it;
- select first cell with data in column A, and PasteSpecial>Values;
- delete the column with formulas.


Arvi Laanemets
 
G

Gord Dibben

Martin

Looks to me like the "numbers" were originally entered as text.

Merely re-formatting to number will not change that fact.

Copy an empty cell formatted to General.

Select your data range and Paste Special>Add>OK>Esc.

This will force the text to numbers.

You will lose the 0 in the 01 cells, but cannot be helped.

You may wish to format those cells to show as 01 but will still be just 1.


Gord Dibben Excel MVP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top