ランクに接尾辞を割り当てる式: 1 の場合は「st」、2 の場合は「nd」など

ランクに接尾辞を割り当てる式: 1 の場合は「st」、2 の場合は「nd」など

レコードの位置を昨年の位置と比較しています:This year it is ranked 4th out of 50, in 2015 it was ranked 21stランクに「st」、「nd」、「rd」、「th」を自動的に追加することは可能ですか?

私のデータはテーブルにあります:

  • COL A = データ ポイントの名前 (Bob、Jane、Bill、Anne など)。これは固定列です。
  • COL B = 最新年のデータ、
  • COL C = 最新年度の階級、
  • COL D = 前年のデータ、
  • COL E = 前年度の順位。

私は IF 数式の使用にかなり慣れていますが、セルの最後の桁を参照して、IF「1 なら 'st'」、IF「2 なら 'nd'」、IF「3 なら 'rd'」、それ以外の場合は 'th' と指定する方法がよくわかりません。

ランクは複数桁の数字になる場合があることに注意してください。文字は最後の桁に基づきます。したがって、ランク 31 は 31 番目です。10 代のランクにも例外があります。ランク 11、12、13 には「th」が使用されます。

これは数式として実行できますか、それとも VBA で実行する必要がありますか?

答え1

以下は、「ランク」がセルB50にあると仮定しています。

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

上記の場合、「st」、「nd」などの結果が得られます。

数字も表示したいと思われるので、

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

「1位」、「2位」などの結果が表示されます

ejbytes のコメントのおかげで、10 を超えるテストはしませんでした。次のスニペットで 22 番目や 43 番目などを取得できます。

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

今度は 11、12、13 の問題、さらに 111、112、113 などの問題が発生するので、それらを処理する必要があります。

=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"))))))

最後に、0 が残ります... 10 番目、50 番目、100 番目、しかし 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")))))))

答え2

@Dave IF 数式を使用して、データ シートにいくつか修正を加える必要がありました。

一番左の数字を認識するには、別の「ヘルパー」列を追加する必要がありました。

  • 列Aは元のランク番号です
  • 列 B は新しいヘルパー列です =VALUE(RIGHT(A1,1)) これにより、最後の桁が得られます。
  • 列Cには次の式があります

    =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")))))
    

英語のせいで、特に 12 と 13 を担当しなければなりませんでした。

効果はありますが、目が痛くなるかもしれません。ありがとうございます

関連情報