我正在將記錄的位置與去年的位置進行比較: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'”,如果“是3 ,則為'rd'”,否則為'th'。
請注意,排名可以是多位數字。這些字母是基於最後一位數字。所以31的排名是第31名。青少年也有例外。第 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")))
這將顯示“第一”、“第二”等結果
感謝 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……因為英語!
它確實有效,但可能會傷害眼睛。謝謝