• 최초 작성일: 2000-07-05
  • 최종 수정일: 2026-09-29
  • 조회수: 28 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 문자열 분리하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

질문 하나

안녕하세요? 오래간만에 인사를 드리는군요. 평소에 자주 인사를 드리지 못하고 꼭 필요한 일이 있을 때만

이렇게 부탁을 드리게 되어 넘 죄송하네요… (중략)… 아래와 같은 자료가 있는데요. 이것을 각 셀로 분리하

고 싶은데 어떻게 하면 좋을까요? 잘하면 될 것도 같은데 그게 생각처럼 잘 되지 않습니다…(하략)…

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

문자열 분리하기

핵심 요약

  • FIND 함수로 괄호나 공백 등 구분 문자의 위치를 찾으면 문자열을 나눌 기준점을 만들 수 있습니다.
  • LEFT와 MID를 이용해 상품명과 용량을 추출하고, RIGHT와 LEN을 조합해 마지막 가격 부분을 분리할 수 있습니다.
  • 문자열의 반복 규칙을 먼저 찾으면 여러 문자열 함수를 조합해 복잡한 데이터도 항목별로 정리할 수 있습니다.

아마 가장 빈번한 질문 중 하나가 문자열 관련 질문이 아닌가 생각됩니다. 위 질문하신 분이 보내주신 자료는 아래의 <표 1>과 같습니다(일부 수정함).

<표 1>

울트라하이드로(120ml)15000원 아이오페레티놀2500(40g)60000원 댄트롤닥터삼푸(300g)2800원 마음의휴(5TB)1500원

이것을 <표 2>와 같이 구분할 수 없는지 질문을 해 오셨군요.

상품명 용량 단가
울트라하이드로 (120ml) 15000원
아이오페레티놀2500 (40g) 60000원
댄트롤닥터삼푸 (300g) 2800원
마음의휴 (5TB) 1500원

자, 어떻게 하면 될까요? '정확히는 잘 모르겠지만 여러 가지 문자열 함수를 총망라(?)해서 쓰면 될 것 같다' 는 생각은 드시지요? 바로 답부터 보지 말고 30초만 생각을 해 보신 후 해설을 보시기 바랍니다. 지금까지 본 강좌를 잘 따라해 오신 분이라면 해설을 보고 말고 할 것도 없을 것입니다.

참고: <표 1>의 자료는 원래 셀 하나에 한 줄씩 입력된 문자열(예: 울트라하이드로(120ml)15000원)이며, 아래 수식의 B20은 원본 워크시트 기준 셀 주소입니다. 직접 적용하실 때에는 자신의 자료가 있는 셀 주소로 바꿔 입력하시기 바랍니다.

(1) 먼저, 상품명 즉 "("의 앞부분에 있는 문자열을 발췌 해야겠지요? 문자열 내에서 특정 문자열을 검색하는 함수로 Find()와 Search() 함수가 있습니다. 이 중에서 Find() 함수를 사용해서 해결해 보도록 할까요?

=LEFT(B20,FIND("(",B20)-1)

라고 해 주면 B20셀에 있는 내용 중에서 "("가 있는 위치에서 1을 뺀 만큼만 Left() 함수를 써서 발췌하게 됩니다.

물론 이 경우에 Search() 함수를 써도 됩니다만 Find() 함수는 대소문자를 구분해서 검색할 수 있기 때문에 좀더 그런 측면에 있어서는 좀더 확장성이 있다고 할 수 있을 것입니다. Search()와 Find() 함수에 대해서는 도움말을 찾아 자세히 살펴 보시기 바랍니다.

(2) 그런 다음, 용량에 해당되는 부분, 즉 ()에 의해 둘러 싸인 부분을 골라 내는 방법입니다. 일단 문자열의 중간 부분을 골라내는 것이니까 Mid() 함수는 써야할 것 같고… (1)에서 배운 Find() 함수를 잘 조합하면 되겠군요. 즉,

=MID(B20,FIND("(",B20),FIND(")",B20)-FIND("(",B20)+1)

이렇게 해 주면 괄호로 둘러싸인 용량 부분을 추출할 수 있습니다.

(3) 마지막으로, 가격에 해당되는 부분만을 찾아내면 되겠군요. 오른쪽 부분의 문자열을 골라내는 것이므로 Right() 함수는 일단 들어가야 할 것 같고, 전체 문자열의 길이에서 괄호의 끝, 즉 ")"이 발견된 위치만큼을 빼 준 부분, 그것이 바로 가격부분이지요?

즉, =RIGHT(B20,LEN(B20)-FIND(")",B20)) 이렇게 하면 원하는 대로 문자열을 분리할 수가 있을 것입니다.

이같은 작업은 VBA 코드로도 물론 가능합니다만, 문자열 함수 몇가지만 써도 충분한데 괜히 힘들게 작업할 필요는 없겠지요? 항상 말씀을 드리는 것이지만 Excel이 보유한 모든 기능을 다 깬 다음에 도저히 해결방법이 없을 때, 그 때 VBA로 프로그램을 짜는 것이 올바른 방법일 것입니다.

오늘은 여기서 끄읕~~, 하려니까 좀 아쉽군요. 문제나 하나 내드릴까요? 아래와 같은 자료가 있습니다.

상품 기본 정보 10 특판.110010001 코롱샴푸플라워 10 특판.110010002 코롱린스플로럴 10 특판.110010003 소프트필링젤 10 특판.110010005 클렌징폼 10 특판.110010006 스와니비누3종 10 특판.110010009 청아파우더워시 10 특판.110010016 미네랄아쿠아파우더 10 특판.110010017 해조클렌징크림

Server로부터 다운받은 이같은 문자열 자료를 아래와 같이 항목별로 구분하려면 어떻게 해야 할까요?

상품 기본 정보 상품코드 상품명
10 특판.110010001 코롱샴푸플라워 110010001 코롱샴푸플라워
10 특판.110010002 코롱린스플로럴 110010002 코롱린스플로럴
10 특판.110010003 소프트필링젤 110010003 소프트필링젤
10 특판.110010005 클렌징폼 110010005 클렌징폼
10 특판.110010006 스와니비누3종 110010006 스와니비누3종
10 특판.110010009 청아파우더워시 110010009 청아파우더워시
10 특판.110010016 미네랄아쿠아파우더 110010016 미네랄아쿠아파우더
10 특판.110010017 해조클렌징크림 110010017 해조클렌징크림

지금까지 강좌를 잘 따라오신 분들에게는 A Piece of Cake! 이지요? 정답은 다음 시간에…

정리 — 문자열 분리하기

구분내용
상품명 추출=LEFT(B20,FIND("(",B20)-1)
용량 추출=MID(B20,FIND("(",B20),FIND(")",B20)-FIND("(",B20)+1)
단가 추출=RIGHT(B20,LEN(B20)-FIND(")",B20))
FIND와 SEARCH둘 다 문자열 안에서 특정 문자의 위치를 찾으며, FIND는 대소문자를 구분
과제점과 공백으로 구분된 상품 기본 정보를 상품코드와 상품명으로 분리 (해설은 다음 강좌)

자주 묻는 질문 (FAQ)

Q1. 한 셀에 섞인 상품명과 용량, 가격은 어떻게 나누나요?

괄호의 위치를 FIND 함수로 찾아 LEFT, MID, RIGHT 함수로 각각 잘라 냅니다. 상품명은 여는 괄호 앞부분, 용량은 괄호로 둘러싸인 부분, 가격은 닫는 괄호 뒤의 오른쪽 부분입니다.

Q2. FIND와 SEARCH 함수는 어떻게 다른가요?

두 함수 모두 위치를 찾아 주지만 FIND 함수는 대소문자를 구분해서 검색할 수 있다는 점이 다릅니다.

Q3. 이런 작업을 VBA로 해야 하나요?

문자열 함수 몇 가지로 충분히 해결되므로 VBA는 Excel의 기능으로 도저히 해결할 수 없을 때 사용하는 것이 올바른 순서입니다.

마치며

문자열을 나눌 때는 구분 문자의 규칙성을 먼저 찾고, 그 위치를 FIND 함수로 구해 문자열 함수와 조합해 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.