Create ordinal number format in Excel

Anonymous
2010-08-09T14:55:38+00:00

Hello,

I am wondering if anyone knows (or knows of any resources that describe) how to create an ordinal number format in MS Excel.

I am well aware of how to reformat numbers as text to create the ordinal number effect, but what I would like to do is have the numberdisplay as an ordinal number (e.g., "1st", "2nd", "3rd", etc.) while still retaining its numeric value (1, 2, 3, etc.).

The reason for this request is to be able to perform numeric functions (e.g., MIN, MAX, AVERAGE, etc.) on an array of ordinal numbers.

I have a spreadsheet that lists various athletes' scores and the ranking for each score.  I would like to be able to easily determine, for example, each athlete's best ranking by using a MIN() function on the list of ordinal numbers.  Currently the only way I can think to do this is by having the rankings as regular cardinal numbers.

I suppose it would be possible to have an adjacent, hidden column with the numeric value of each ranking, but I thought it might be more elegant if there was a way to change the format of the number without changing its value.

Any help is much appreciated!

Regards,

Craig

Microsoft 365 and Office | Excel | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

58 answers

Sort by: Oldest
  1. Anonymous
    2010-08-09T16:04:48+00:00

    Ron,

    Yes, this would help, but I was wondering if there is any way to format the cell/number directly, rather than having to use "helper" cells.

    I am willing to use VBA to accomplish this if need be, as the workbook in question already has other user-defined functions programmed in VBA.

    Thanks,

    Craig

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  2. Anonymous
    2010-08-09T16:07:02+00:00

    Nuculerman,

    Can you provide a little more detail to your solution?  I think it is on the right track of what I want to accomplish, but not sure.

    Ideally, the cell would be formatted directly.

    So if 2 is entered in the cell, either directly or as the result of a formula, it would appear as "2nd," but would still be treated by other formulas as 2.

    Thank you,

    Craig

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2010-08-09T16:09:33+00:00

    Jim,

    I would prefer to use a macro or some VBA code, rather than an adjacent column.

    One solution I have worked out is to simply format the ordinal numbers as text strings, and then when I want to perform operations on them (such as MIN()), I can extract the numeric part of the string, convert to a number, and use arrays.  But this seems a little clumsy and I am wondering if there is a more elegant way to do it.

    I am surprised that Excel does not have ordinal numbers built in!

    Thanks,

    Craig

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  4. Anonymous
    2010-08-09T16:25:06+00:00

    Here is some event code which will handle the changing of the cell or cells number format automatically...

    Private Sub Worksheet_Change(ByVal Target As Range)

      Dim Cell As Range

      For Each Cell In Target

        If Cell.Column = 3 And IsNumeric(Cell.Value) Then

          Cell.NumberFormat = "#""" & Mid$("thstndrdthththththth", 1 - 2 * ((Cell.Value) _

                              Mod 10) * (Abs((Cell.Value) Mod 100 - 12) > 1), 2) & """"

        End If

      Next

    End Sub

    To install this code, right click the name tab at the bottom of the worksheet you want to have this functionality, select View Code from the popup menu that appears and then copy/paste the above code into the code window that appeared. Here I have set the code to respond to numbers placed in Column "C", but that can be changed, of course. Now, whenever you enter a number into Column "C" (or whatever column you choose to monitor), that number will display with the ordinal suffix attached to it, but the value in the cell will be the number itself.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  5. Anonymous
    2011-02-27T21:41:39+00:00

    As with so many such problems, the trick from Excel 2007 onwards is to use conditional formatting, since the format you choose for matching cells can be to change the number format as well as the "pretty" things like colours and borders.

    Use a cell number format of #"th" for all cells, then three conditions which apply, with formulas such as:

    =AND(A1<>11,MOD(A1,10)=1)  for these cells use format #"st"

    etc.

    Hope this helps

    Was this answer helpful?

    3 people found this answer helpful.
    0 comments No comments