나는 레코드의 위치를 작년의 위치와 비교하고 있습니다: 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")))
그러면 "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을 구체적으로 처리해야 했습니다…
효과는 있지만 눈에 상처를 줄 수 있습니다. 감사해요