Excel

문자열 중 원문자 지우기(3) - TextJoin, Sequence

별동산 2024. 5. 13. 08:37
반응형

이번에는 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를 쨈 다음으로 잘라서 붙여도 잘됩니다.

 

원문자삭제문의(완성)3.xlsx
0.02MB

반응형