이번에는 Textjoin 함수를 이용해 원문자가 아닌 글자만 결합하는 수식을 작성해 보겠습니다.
마찬가지로 B3셀을 갖고 원문자를 제외한 글자만 결합하는 수식을 B18셀에 작성해 보겠습니다.
1. TextJoin 함수
TextJoin 함수의 구문은
TEXTJOIN(delimiter, ignore_empty, text1, [text2], …)로서
첫 번째 인수는 구분자, 두 번째는 빈 셀을 무시할지 여부, 세 번째부터는 결합한 문자열입니다.
그런데 여기서는 글자를 하나씩 가져와서 Unicode가 9312보다 작거나 9331보다 크다면 결합하지 않는 것으로 하면 됩니다.
2. 수식
가. 조건식 만들기
첫 번째 인수인 결합할 때 사용할 구분자는 없으므로 공백으로 하고,
두 번째 빈셀 무시도 예이므로 입력하지 않고 넘어가고
세 번째부터를 Mid함수를 이용해 하나씩 분리하고, Unicode를 판단하도록 합니다.
그런데 문제는 한글이 9312보다 크다는 것입니다.
다시 말해 =UNICODE(MID(B3,SEQUENCE(LEN(B3)),1))>=9312라고 입력하면 모두 True가 반환됩니다.
그래서 Unicode가 뭔지 알아보기 위해 >=9312를 지워보니
제일 작은 값이 47548입니다.
그렇지만 =UNICODE(MID(B3,SEQUENCE(LEN(B3)),1))<=9331이라고 입력하면
원하는 대로 맨 오른쪽 원문자만 True가 나오고 나머지는 False이므로 이를 이용하면 됩니다.
나. 9331 이하면 공백을 반환하고, 아니면 하나씩 가져온 문자를 결합하기
먼저 원문자가 아닌 것을 구하는 수식은
=IF(UNICODE(MID(B3,SEQUENCE(LEN(B3)),1))<=9331,"",MID(B3,SEQUENCE(LEN(B3)),1))
한 글자씩을 TextJoin으로 결합하면
=TEXTJOIN(,,IF(UNICODE(MID(B3,SEQUENCE(LEN(B3)),1))<=9331,"",MID(B3,SEQUENCE(LEN(B3)),1)))
이 됩니다.
원문자를 제외한 메추리알장조림이 잘 구해졌습니다.
이제 B18셀의 수식을 복사해서 B17셀부터 U21셀까지 붙여 넣으면
다. 에러 처리
셀 값이 비어있을 경우 Mid함수에서 에러가 발생하므로
=TEXTJOIN(,,IFERROR(IF(UNICODE(MID(B6,SEQUENCE(LEN(B6)),1))<=9331,"",MID(B6,SEQUENCE(LEN(B6)),1)),""))라고,
IFERROR(와 ,"")를 추가하면 됩니다.
이제 B21셀의 수식을 복사한 후 다른 셀에 모두 붙여 넣으면 완성입니다.
T17처럼 원문자가 2개 있어도, T18셀처럼 원문자가 1개, U20셀처럼 원문자가 3개인 경우도 모두 처리가 잘 됩니다.
그리고, 중간에 원문자가 있어도 문제가 없습니다.
U5셀의 원문자 1과 2를 쨈 다음으로 잘라서 붙여도 잘됩니다.
'Excel' 카테고리의 다른 글
해당 월까지의 계획과 실적의 합계 구하기 (0) | 2024.05.15 |
---|---|
문자열 중 원문자 지우기(4) - Scan, Reduce (0) | 2024.05.14 |
문자열 중 원문자 지우기(2) - Unichar, Find, Min, Left (0) | 2024.05.10 |
문자열 중 원문자 지우기(1) - Unicode, Substitute (0) | 2024.05.09 |
하나라도 일치하는 건 수 세기 (0) | 2024.05.08 |