Formel zur Zuweisung eines Suffixes zu einem Rang: WENN 1, dann „st“, WENN 2, dann „nd“ usw.

Formel zur Zuweisung eines Suffixes zu einem Rang: WENN 1, dann „st“, WENN 2, dann „nd“ usw.

Ich vergleiche die Position eines Rekords mit seiner Position im letzten Jahr: This year it is ranked 4th out of 50, in 2015 it was ranked 21stIst es möglich, „1.“, „2.“, „3.“ und „4.“ automatisch zur Rangfolge hinzuzufügen?

Meine Daten sind in einer Tabelle:

  • COL A = Name des Datenpunkts (Bob, Jane, Bill, Anne usw.). Dies ist eine feste Spalte.
  • COL B = Daten des letzten Jahres,
  • COL C = Rang des letzten Jahres,
  • COL D = Vorjahreswerte,
  • COL E = Rang im Vorjahr.

Ich komme mit der Verwendung von WENN-Formeln recht gut zurecht, bin mir aber nicht sicher, wie ich auf die letzte Ziffer in einer Zelle verweisen und sagen kann: WENN „es eine 1 ist, dann ‚st‘“, WENN „es eine 2 ist, dann ‚nd‘“, WENN „es eine 3 ist, dann ‚rd‘“, sonst ‚th‘.

Beachten Sie, dass der Rang eine mehrstellige Zahl sein kann. Die Buchstaben basieren auf der letzten Ziffer. Rang 31 ist also der 31. Rang. Es gibt auch Ausnahmen für die Teenager. Die Ränge 11, 12 und 13 verwenden „th“.

Kann dies als Formel erfolgen oder muss es per VBA erledigt werden?

Antwort1

Im Folgenden wird davon ausgegangen, dass sich der „Rang“ in Zelle B50 befindet.

=IF(B50=1,"st",IF(B50=2,"nd",IF(B50=3,"rd","th")))

Das Obige liefert Ergebnisse wie „st“, „nd“ usw.

Ich vermute aber, dass Sie auch die Nummer anzeigen möchten. Verwenden Sie daher

=IF(B50=1,B50 & "st",IF(B50=2,B50 & "nd",IF(B50=3,B50 & "rd",B50 & "th")))

Dadurch werden Ergebnisse wie „1.“, „2.“ usw. angezeigt.

Dank ejbytes Kommentar habe ich nicht > 10 getestet! Der folgende Codeausschnitt tut es, sodass Sie den 22. oder 43. usw. haben können

=IF(RIGHT(B50,1) = "1", B50&"st",IF(RIGHT(B50,1)="2",B50&"nd",IF(RIGHT(B50,1)="3",B50&"rd",B50&"th")))

Jetzt kommen wir zu den Problemen 11, 12 und 13 sowie 111, 112, 113 usw., also müssen wir uns um diese kümmern!

=IF(RIGHT(B50,2)="11",B50 & "th",IF(RIGHT(B50,2)="12",B50&"th",IF(RIGHT(B50,2)="13",B50&"th",IF(RIGHT(B50,1)="1",B50&"st",IF(RIGHT(B50,1)="2",B50&"nd",IF(RIGHT(B50,1)="3",B50&"rd",B50&"th"))))))

Schließlich bleiben uns 0 ... 10., 50., 100., aber wir haben auch 0!

=IF(B50=0,0,IF(RIGHT(B50,2)="11",B50&"th",IF(RIGHT(B50,2)="12",B50&"th",IF(RIGHT(B50,2)="13",B50&"th",IF(RIGHT(B50,1)="1",B50&"st",IF(RIGHT(B50,1)="2",B50&"nd",IF(RIGHT(B50,1)="3",B50&"rd",B50&"th")))))))

Antwort2

Beim Arbeiten mit der WENN-Formel von @Dave musste ich einige Änderungen an meinem Datenblatt vornehmen.

Das Erkennen der äußersten linken Ziffer bedeutete, dass ich eine weitere Hilfsspalte hinzufügen musste.

  • Spalte A ist die ursprüngliche Rangnummer
  • Spalte B ist eine neue Hilfsspalte =VALUE(RIGHT(A1,1)). Dadurch erhalte ich die letzte Ziffer.
  • Spalte C enthält die Formel

    =IF(A1=12,A1&"th",IF(A1=13,A1&"th",IF(B1=1,A1&"st",IF(B1=2,A1&"nd",IF(B1=3,A1&"rd",A1&"th")))))
    

Ich musste speziell mit den Klassen 12 und 13 klarkommen … wegen Englisch!

Es funktioniert, aber es könnte die Augen verletzen. Danke

verwandte Informationen