- 최초 작성일: 2025-01-29
- 최종 수정일: 2026-09-23
- 조회수: 20 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 데이터 형식 맞추기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
이번 강좌는 유튜브 '엑셀러TV'의 아래 강좌에 대한 심화 강좌입니다. 잘 이해가 되지 않는 분은 동영상 강좌를 먼저 참고하고 다시 보시면 이해하기 쉽습니다.
어느 회사의 상품코드가 있습니다. 앞의 두 자리는 '유형', 그 다음 다섯 자리는 '개별코드' 이렇게 7자리로 이루어져 있습니다.
각 유형별로 몇 개의 제품이 있는지 파악하기 위해 E3 셀에 수식을 입력하고 <Enter>키를 눌러봅니다.
[E3] =SUMPRODUCT((LEFT($B$3:$B$18,2)=D3)*1)
어라? 결과가 '0'이 나오는군요. 분명히 '10' 유형에 해당하는 제품이 분명히 있고, 수식에도 별 이상이 없어보이는데 말이지요. 어찌된 일일까요?
이것은 데이터 타입이 서로 달라서 생기는 문제입니다. D3 셀의 '10'은 숫자인데 LEFT 함수로 추출한 결과값은 문자열입니다. 겉으로 보기에는 둘 다 '10'이지만 문자열 10과 숫자 10을 엑셀은 다르게 인식합니다.
이럴 때에는 문자값을 숫자값으로 바꾸든지, 아니면 숫자를 문자값으로 바꿔서 하나로 맞춰 주어야 합니다. 이런 유형의 문제는 실무에서 빈번하게 발생합니다. 오늘은 이와 관련된 문제의 해결 방법을 다룹니다.
데이터 형식을 맞추는 방법 정리
핵심 요약: 숫자·문자 데이터 형식 맞추는 6가지 방법
LEFT 함수로 추출한 문자열과 비교 대상 숫자는 겉보기엔 같아도 데이터 형식이 달라 수식 결과가 0이 됩니다. 문자를 숫자로(VALUE, --, *1) 또는 숫자를 문자로(&"", TEXT) 바꿔 형식을 맞추면 해결됩니다.
- 방법 1~3(문자→숫자): VALUE 함수, 더블 마이너스(--), 1 곱하기
- 방법 4~5(숫자→문자): 빈 문자열 연결(&""), TEXT 함수
- 방법 6: 배열 수식(Array Formula)으로 IF·SUM 조합
- 선택 기준: 결과는 모두 동일, 가장 편한 방법을 사용하면 됨
방법 1: VALUE 함수를 이용하여 문자를 숫자로 변경
VALUE 함수를 이용하면 문자열 형태의 숫자값을 온전한 숫자로 변환할 수 있습니다.
[E3] =SUMPRODUCT((VALUE(LEFT($B$3:$B$18,2))=D3)*1)
방법 2: '--'를 이용하여 문자를 숫자로 변경
VALUE 함수 대신 더블 마이너스, 즉 마이너스(-)를 두 번 연속해서 문자열 형태의 숫자 앞에 붙여줍니다.
[F3] =SUMPRODUCT((--(LEFT($B$3:$B$18,2))=$D3)*1)
방법 3: 숫자 '1'을 곱하여 문자를 숫자로 변경
문자열 형태의 숫자에 1을 곱하면 온전한 숫자로 바꿀 수 있습니다.
[G3] =SUMPRODUCT(((LEFT($B$3:$B$18,2)*1)=$D3)*1)
이상 세 가지는 문자 형태의 숫자 데이터를 숫자로 바꾸는 방법이었습니다. 숫자를 문자열로 변환해도 같은 결과를 얻을 수 있습니다.
방법 4: 숫자 뒤에 공백 문자열을 추가하여 문자열로 변환
& 연산자를 이용하여 숫자 뒤에 빈 문자열을 연결하면 문자열 데이터가 됩니다. 그 결과값을 LEFT 함수로 추출한 결과값과 비교해 주는 원리입니다.
[H3] =SUMPRODUCT((LEFT($B$3:$B$18,2)=$D3&"")*1)
방법 5: TEXT 함수를 이용하여 문자열로 변환
& 연산자 대신 TEXT 함수를 이용하여 숫자를 문자열로 변환할 수 있습니다.
[I3] =SUMPRODUCT((LEFT($B$3:$B$18,2)=TEXT($D3,"@"))*1)
방법 6: 배열 수식(Array Formula) 사용
배열 수식을 사용할 수도 있습니다.
[J3] {=SUM(IF(VALUE(LEFT($B$3:$B$18,2))=$D3,1,0))}
참고: 수식 앞과 뒤의 중괄호 { }는 수식 입력 후 <Ctrl> + <Shift> + <Enter> 키를 함께 누르면 자동으로 생깁니다. 손으로 입력하지 않도록 주의!
이 정도면 어느 정도 정리가 된 것 같습니다. 가장 편한 방법을 사용하시면 되겠습니다. 다른 좋은 방법을 알고 있는 분은 알려주시고요.
참고: 이미지에 대하여
이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 수식과 결과값을 바탕으로 재구성한 예시 화면이며, 실제 엑셀 화면과 세부 디자인은 다를 수 있습니다.
정리 — 데이터 형식 맞추는 6가지 방법
| 방법 | 방향 | 핵심 수식 |
|---|---|---|
| 1. VALUE 함수 | 문자→숫자 | VALUE(LEFT(...)) |
| 2. 더블 마이너스 | 문자→숫자 | --(LEFT(...)) |
| 3. 1 곱하기 | 문자→숫자 | LEFT(...)*1 |
| 4. 빈 문자열 연결 | 숫자→문자 | $D3&"" |
| 5. TEXT 함수 | 숫자→문자 | TEXT($D3,"@") |
| 6. 배열 수식 | 문자→숫자 | {SUM(IF(VALUE(...)=D3,1,0))} |
자주 묻는 질문 (FAQ)
Q1. SUMPRODUCT 수식 결과가 0으로 나오는 이유는 무엇인가요?
비교하는 두 값의 데이터 형식이 다르기 때문입니다. LEFT 함수로 추출한 값은 문자열이고, 비교 대상 셀은 숫자인 경우 겉보기엔 같은 '10'이라도 엑셀은 서로 다른 값으로 인식해 조건이 성립하지 않습니다.
Q2. 문자열을 숫자로 바꾸는 방법에는 어떤 것들이 있나요?
VALUE 함수를 사용하거나, 더블 마이너스(--)를 앞에 붙이거나, 숫자 1을 곱하는 세 가지 방법으로 문자열 형태의 숫자를 온전한 숫자로 바꿀 수 있습니다.
Q3. 반대로 숫자를 문자열로 바꾸려면 어떻게 하나요?
숫자 뒤에 빈 문자열을 연결(&"")하거나, TEXT 함수로 서식을 지정해 문자열로 변환하면 됩니다.
마치며
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.