Formula untuk menetapkan akhiran ke peringkat: IF 1 lalu "st", IF 2 lalu "nd", dll

0

Saya membandingkan posisi rekor ke posisi tahun lalu: This year it is ranked 4th out of 50, in 2015 it was ranked 21st. Apakah mungkin untuk menambahkan "st", "nd", "rd" dan "th" ke peringkat secara otomatis?

Data saya ada di dalam tabel:

  • COL A = Nama titik data (Bob, Jane, Bill, Anne, dll.). Ini adalah kolom tetap.
  • COL B = data tahun terbaru,
  • COL C = peringkat tahun terbaru,
  • COL D = data tahun sebelumnya,
  • COL E = peringkat tahun sebelumnya.

Saya cukup nyaman menggunakan rumus IF, tapi saya tidak yakin bagaimana merujuk ke digit terakhir dalam sel dan berkata: JIKA "itu 1 lalu 'st'", JIKA "itu 2 lalu 'nd'", JIKA "itu 3 maka 'rd'", kalau tidak 'th'.

Perhatikan bahwa peringkat dapat berupa angka multi-digit. Surat-surat didasarkan pada digit terakhir. Jadi peringkat 31 adalah 31. Itu juga pengecualian untuk para remaja. Peringkat 11, 12 dan 13 menggunakan "th".

Apakah ini dapat dilakukan sebagai formula atau perlu dilakukan oleh VBA?

RocketGoal
sumber
Tidak jelas dari mana data ini berasal ... Di mana "peringkat" itu?
Dave
@ Pernah saya sudah mencoba beberapa pernyataan IF tapi saya tidak bisa mendapatkannya untuk mengenali digit terakhir dari 22 atau 31.
RocketGoal
@Dave Kolom peringkat ada di sana tetapi saya mungkin harus menambahkan kolom lain untuk memasukkan akhiran dan kemudian menggabungkan keduanya. Sulit baginya untuk mengenali digit terakhir 21 atau 33.
RocketGoal

Jawaban:

0

Berikut ini mengasumsikan "peringkat" ada di sel B50 "

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

Di atas akan memberi Anda hasil seperti "st", "nd" dll

Meskipun saya curiga Anda juga ingin menunjukkan nomornya, jadi gunakan

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

Ini akan menampilkan hasil seperti "1", "2" dll

Berkat komentar ejbytes, saya tidak menguji> 10! Cuplikan berikut melakukannya sehingga Anda dapat memiliki 22 atau 43 dll

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

Sekarang kita masuk ke isu 11, 12 dan 13, serta 111, 112, 113 dll, jadi kita harus menanganinya!

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

Akhirnya, kita pergi dengan 0 ... 10, 50, 100, tetapi kita juga memiliki 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")))))))
Dave
sumber
Terima kasih. Saya akan mencoba yang kedua, tapi saya khawatir itu mungkin tidak mengenali 'digit terakhir' dari dua digit angka. Saya dapat menambahkan kolom lain untuk mengambil digit paling kanan dan kemudian menjalankan rumus Anda pada itu ...
RocketGoal
1
Saya menambahkan kolom lain untuk mengekstrak digit paling kiri. Lalu saya mengarahkan formula IF Anda ke sana. Saya akan berikan jawabannya di bawah. Terima kasih atas bantuan Anda dengan ini.
RocketGoal
Ini berfungsi dengan baik dan dapatkan semuanya. Logika yang bagus. Saya bahkan akan melangkah lebih jauh dengan mengatakan bahwa Anda dapat mengganti setiap sel, misalnya B50, dengan KANAN (B50,1), yang akan selalu terlihat angka terakhir dalam angka (mis. 20th 151st 23rd 334thth ...)
ejbytes
1
Dan untuk 21? Saya menambahkan komentar di atas karena ini hanya bekerja pada angka 1-9, semua angka lebih besar dari 9 adalah n-th.
ejbytes
1
@Saya akhirnya menggunakan rumus terakhir Anda. Itu berhasil memperlakukan apa yang perlu saya lakukan. Terima kasih banyak telah membantu masalah ini. Ketika saya mengatakan membantu, sebenarnya saya maksudkan pemecahan. Terima kasih. Sangat dihargai.
RocketGoal
1

Bekerja dengan formula @Dave IF saya harus membuat beberapa perubahan pada lembar data saya.

Mengenali angka paling kiri berarti saya perlu menambahkan kolom 'pembantu' lainnya.

  • Kolom A adalah nomor pangkat asli
  • Kolom B adalah kolom pembantu baru = VALUE (KANAN (A1,1)) Ini memberi saya digit terakhir.
  • Kolom C memiliki rumus

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

Saya harus menangani 12 dan 13 secara khusus ... karena bahasa Inggris!

Itu bekerja, tetapi mungkin menyakiti mata. Terima kasih

RocketGoal
sumber
1
Anda juga perlu pengecualian untuk 11.
fixer1234
1
Jika Anda menambahkan empat spasi sebelum rumus, itu akan menjadi blok kode, ini akan membantu keterbacaan
Michthan
= JIKA (DAN (A1> 10, A1 <14), A1 & "th", IF (KANAN (A1,1) = 1, A1 & "st", IF (KANAN (A1,1) = 2, A1 & "nd" , JIKA (KANAN (A1,1) = 3, A1 & rd, A1 & "th"))))
ejbytes
@ fixer1234 Yap. Yang itu juga.
RocketGoal
@ejbytes, terima kasih untuk ini. Saya telah memecahkan masalah, tetapi saya pasti akan menyalin rumus ini untuk contoh cara membuat sarang secara efektif.
RocketGoal