为等级分配后缀的公式:如果为 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 公式,但我不确定如何引用单元格中的最后一位数字并说:如果“它是 1 则为‘st’”,如果“它是 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")))

这将显示“1st”、“2nd”等结果

感谢 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...因为英语!

有用,但可能会伤害眼睛。谢谢

相关内容