Today's Agenda

텍스트를 다룰 때 쓰는 Exact함수, Trim함수 그리고 Substitue함수


최근에 담당하고 있는 업무때문에 SAP에서 자료를 다운 받아 서로 비교할 일이 많이 있었습니다. 자료A와 B가 동일한 목록을 가지고 있는 지 확인하고, 값을 비교하는 것이었는데, 그 때 사용했던 방법과 함수를 공유하고자 합니다. 


1. 텍스트 두 개를 비교할 때

각각의 셀에 들어있는 텍스트를 서로 비교할 때 가장 먼저 생각할 수 있는 것이 IF함수를 쓰는 것입니다. 예를 들어 셀A1과 셀B1을 비교하고 그 결과를 C열에 기록하는 함수는 =IF(A1=B1, "OK", "Wrong") 정도가 될 것입니다. 

다만, 이제 소개하려는 함수대비 타이핑해야 할 게 많을뿐만 아니라, IF함수의 다양한 용법때문에 도리어 다른 사람이 엑셀을 볼 때 의도를 이해할 때 조금 어려움을 겪을 수 있습니다. OK라던가 Wrong이라던가 알아볼 수 있는 표식을 써줘야 하는데 그 의미를 서로 다르게 해석할 수도 있구요. 


이 때 쓰면 좋은 함수가 Exact함수입니다. 사용법은 간단하게 =Exact(A1, B1)입니다. 그리고 같으면 TRUE를, 다르면 FALSE를 돌려주죠. 아래 캡쳐화면에서 D2셀과 D3셀이 Exact함수를 이용해서 B열과 C열을 비교한 것입니다. 매우 직관적이므로 사용에 크게 어려운 함수는 아니리라 생각됩니다.


 

2. 텍스트 세 개를 비교할 때

조금 더 나가서 세 개의 텍스트가 같은지 비교해보도록 하겠습니다. EXACT(A, B, C)이렇게 쓸 수 있었으면 했지만, 아쉽게도 되지 않아서 AND함수를 응용했고, A와 B가 같고, B와 C가 같으면 A=B=C라는 logic으로 다단계 함수를 구성하였습니다.AND( Exact(A, B) , Exact(B, C))  형식으로 말이죠. 

참고로, AND함수는 두 개의 인수가 모두 참일때만 참(TRUE)를 돌려주는 함수입니다.

E5셀은 B5와 C5 값이 같지만, C5와 D5값이 다르기 때문에 FALSE를 돌려주고 있습니다. 


3. 텍스트 가다듬기

그런데 실무를 하다보면, 특히 시스템에서 바로 다운 받은 자료들의 경우에는 위에서 말한 것처럼 간단하게 끝나지 않는 경우가 많습니다. 텍스트의 앞뒤로 공백이 있거나, 심지어 텍스트 중간 중간에 공백이 있는 경우도 있기 때문입니다. 

" 홍길동 "과 "홍길동" 같아 보이지만, 엑셀에게는 엄연히 다른 텍스트입니다. 또 "설 까 치"과 "설까치"도 엑셀에게는 머나먼 사이입니다. 

이렇게 공백 등이 포함되지 않게 자료를 관리하는 것이 최선이겠지만 이미 그런 상황에 부딪힌 경우라면 아래와 같이 한 번 해보시기 바랍니다. 


1) 앞, 뒤 공백을 제거하고 비교한다

아래 예시를 보시면 " 마동탁 "과 "마동탁"을 비교하고 있는데, 2행은 FALSE라는 결과를 3행은 TRUE라는 다른 결과를 보이고 있습니다. TRIM함수의 활약 덕분인데요. TRIM은 텍스트 앞뒤의 공백을 제거해 줍니다. TRIM(" 마동탁 ")="마동탁"이 되는 것이지요.



2) 텍스트 중간중간에 공백이 있을 때는

TRIM 함수로 많은 경우에 대처가 가능하시겠지만, 종종 데이타 관리가 잘 못되어 텍스트 중간에 공백이 들어가는 경우가 있습니다. TRIM으로도 되지 않고 비교하면 다르다고 나오고, 곤란하게 됩니다. 텍스트 중간 공백을 없애주는 함수도 있었으면 했지만, 아쉽게도 그런 함수는 없는 것 같고, SUBSTITUTE라는 텍스트 일부 바꿔치기 함수를 응용해보겠습니다. 


SUBSTITUTE(text, old_text, new_text, [instance_num])

  • text는 바꾸고 싶어하는 텍스트입니다. "지하철3호선"을 "지하철4호선"으로 바꾸고 싶을 경우 "지하철3호선"가 있는 셀을 지정해주면 됩니다.
  • old_text는 위의 text에서 바꾸고 싶어하는 일부 문자열입니다. 예제에서는 3을 4로 바꾸고 싶으므로 "3"을 넣어주면 됩니다.
  • new_text는 old 대신에 넣어줄 텍스트로 예제에서는 "4"가 됩니다.

D6셀에 있는 SUBSTITUTE(B6, " ", "")이라는 문구가 확인되셨나요? 약간은 장난처럼 큰 따옴표가 잔뜩있는데요. " "를 ""로 즉 빈칸 하나를 아무것도 없음으로 바꾸어달라, 즉 빈 칸을 없애달라는 뜻이 됩니다.


그 효과로 D6의 결과가 TRUE가 되었습니다.


이번 포스팅이 텍스트를 다루실 때 도움이 되셨으면 합니다.


130120_Sample01.xlsx




AND