엑셀 공백 제거 완벽 가이드: TRIM 함수와 숨은 공백(CHAR(160))까지 한 번에 정리하는 방법

이 글의 목적은 엑셀에서 셀 내부의 불필요한 공백을 신속하고 정확하게 제거하는 방법을 체계적으로 정리하여 실무 데이터 전처리에 즉시 활용하도록 돕는 것이다.

1. 왜 공백 제거가 중요한가

공백은 정렬, 중복 제거, 피벗테이블, VLOOKUP·XLOOKUP·MATCH 같은 조회 함수, 텍스트 비교, 숫자 변환, 데이터 유효성 검사 등 대부분의 데이터 처리 단계에서 오류를 유발한다. 선행 공백과 후행 공백, 단어 사이의 과도한 공백, 웹에서 복사된 비가시 공백(예: CHAR(160)인 NBSP) 등이 대표적이다. 공백을 표준화하지 않으면 동일 값이 서로 다른 값처럼 인식되어 분석 결과가 왜곡된다.

2. TRIM 함수의 핵심 동작 원리

TRIM 함수는 다음과 같이 동작한다.

  • 문자열의 선행 공백과 후행 공백을 모두 제거한다.
  • 문자열 내 연속된 일반 공백(ASCII 32)을 단일 공백 하나로 축소한다.
  • 비가시 공백(예: NBSP = CHAR(160))이나 제어문자 등은 제거하지 못한다.
주의 : TRIM은 일반 공백(ASCII 32)만 대상으로 동작한다. 웹·PDF·ERP에서 복사한 데이터의 NBSP(CHAR(160))는 TRIM으로 제거되지 않으므로 추가 처리가 필요하다.

3. TRIM 기본 사용법

다음 예제는 기본 공백 정리에 적합하다.

=TRIM(A2)

범위에 바로 적용하려면 동적 배열 또는 채우기를 사용한다.

=TRIM(A2:A100)

동적 배열이 지원되지 않는 버전에서는 첫 셀에 수식을 입력한 뒤 아래로 복사하여 적용한다.

4. TRIM의 한계 보완: CLEAN, SUBSTITUTE 조합

다음 조합은 비인쇄 문자와 NBSP까지 제거하도록 설계한다.

=TRIM(CLEAN(SUBSTITUTE(A2, CHAR(160), " ")))
  • SUBSTITUTE(A2, CHAR(160), " ") : NBSP를 일반 공백으로 치환한다.
  • CLEAN(...) : 제어문자(ASCII 0~31)를 제거한다.
  • TRIM(...) : 선행/후행 공백 제거 및 다중 공백을 단일 공백으로 축소한다.
주의 : 워드프레스·포털 기사·ERP 화면에서 복사한 텍스트는 NBSP가 섞여 있을 가능성이 높다. 위 조합을 기본 템플릿으로 저장해 두는 것이 좋다.

5. 모든 공백을 완전히 제거하는 방법(단어 사이 공백도 제거)

상품코드, 사번 등 내부 공백이 절대 허용되지 않는 필드라면 다음을 사용한다.

=SUBSTITUTE(SUBSTITUTE(A2, CHAR(160), ""), " ", "")

모든 종류의 공백을 삭제하므로 가독성은 떨어지지만 키값 정규화에 적합하다.

6. 다국어·혼합 공백 대응(전각 공백 포함)

일본어·중국어 데이터나 전각 공백(유니코드 U+3000)이 섞인 경우 다음을 사용한다.

=LET(_t,A2, _t1,SUBSTITUTE(_t,CHAR(160)," "), _t2,SUBSTITUTE(_t1,UNICHAR(12288)," "), /* 전각 공백 U+3000 */ TRIM(CLEAN(_t2)))

UNICHAR(12288)은 전각 공백이다. 전각 공백을 일반 공백으로 치환한 후 TRIM·CLEAN을 적용한다.

7. 숫자처럼 보이지만 텍스트인 값 정리

금액·수량 등 숫자 필드에 공백이 섞이면 합계·정렬·필터가 오작동한다. 다음 수식으로 공백을 정리하고 숫자로 변환한다.

=VALUE(SUBSTITUTE(SUBSTITUTE(A2, CHAR(160), ""), " ", ""))

천 단위 구분 쉼표까지 제거하려면 다음을 사용한다.

=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, ",",""), CHAR(160), ""), " ", ""))
주의 : 문자열에 통화기호(₩, $, €)가 포함된 경우 SUBSTITUTE로 추가 제거 후 VALUE를 적용해야 한다.

8. 범주형 텍스트의 표준화 파이프라인

공백 정리와 대소문자 표준화를 동시에 수행하면 분류·그룹화의 정확도가 높아진다.

=UPPER(TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160)," "), UNICHAR(12288), " "))))

소문자 표준화는 LOWER(...), 단어별 첫 글자만 대문자는 PROPER(...)로 바꿔 적용한다.

9. 배열 수식으로 대량 정리

표 전체를 한 번에 정리하려면 동적 배열을 사용한다.

=MAP(A2:A100, LAMBDA(x, TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(x,CHAR(160)," "), UNICHAR(12288)," ")))))

MAPLAMBDA를 사용하면 재사용 가능한 사용자 정의 정리 함수를 손쉽게 구축할 수 있다.

10. 사용자 정의 LAMBDA: 공백정리()

한 번 정의해두면 통합 문서 전반에서 재사용이 편리하다.

=LAMBDA(x, TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(x,CHAR(160)," "), UNICHAR(12288)," ")))) 

이 함수를 이름 관리자에서 공백정리로 저장한 뒤 다음처럼 사용한다.

=공백정리(A2)

11. 실전 시나리오별 권장 수식

상황권장 수식비고
선행·후행 공백과 다중 공백 제거 =TRIM(A2) ASCII 32 공백만 처리한다.
NBSP와 제어문자까지 제거 =TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," "))) 웹 복사 데이터 기본 처방이다.
모든 공백 완전 삭제 =SUBSTITUTE(SUBSTITUTE(A2,CHAR(160),"")," ","") 코드·키값 정규화에 사용한다.
전각 공백 포함 다국어 데이터 =TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160)," "),UNICHAR(12288)," "))) U+3000 처리 포함이다.
숫자 텍스트 정리 후 숫자화 =VALUE(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160),"")," ","")) 합계·피벗 정상화이다.
대량 범위 일괄 정리 =MAP(A2:A100,LAMBDA(x,TRIM(CLEAN(SUBSTITUTE(x,CHAR(160)," "))))) 동적 배열 전제이다.

12. TRIM 실패 진단 체크리스트

  1. 눈에 보이지 않는가: 셀 길이 비교로 판단한다. =LEN(A2)>LEN(TRIM(A2))이면 일반 공백 중복이 존재한다.
  2. NBSP 여부: =CODE(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))의 결과에 160이 보이면 NBSP이다.
  3. 전각 공백 여부: 유니코드 검사로 12288이 있는지 확인한다. 동적 기능이 부족하면 파워쿼리로 검사한다.
  4. 숨은 제어문자 여부: CLEAN 적용 후 길이 변화를 본다.
주의 : 텍스트 중간에 탭(CHAR(9))이 섞이면 TRIM만으로는 제거되지 않는다. SUBSTITUTE(A2,CHAR(9)," ")로 먼저 치환한 후 TRIM을 적용한다.

13. 파워 쿼리로 공백 정리 자동화

대용량·반복 작업은 파워 쿼리를 사용하면 효율적이다.

  1. 데이터 탭에서 “데이터 가져오기”로 원본을 로드한다.
  2. 쿼리 편집기에서 열을 선택한 뒤 “변환 > 형식 > 공백 제거(Trim)”를 적용한다.
  3. “변환 > 서식 > 정리(Clean)”를 추가로 적용한다.
  4. 필요 시 “값 바꾸기”로 NBSP(복사한 공백 붙여넣기) → 일반 공백으로 치환한다.
  5. 닫기 및 로드로 테이블을 시트에 반영한다.

파워 쿼리는 새 파일 교체 시에도 같은 규칙을 재사용하므로 표준화된 파이프라인 구축에 유리하다.

14. 플래시 채우기와 찾기·바꾸기의 보조 활용

  • 플래시 채우기를 사용하면 패턴 기반 정리가 가능하다. 예를 들어 “홍 길 동” → “홍길동”으로 만들려면 목표 패턴을 하나 제시하고 Ctrl+E를 사용한다.
  • 찾기/바꾸기에서 공백을 전체 삭제하려면 찾을 내용에 공백을 입력하고 바꿀 내용은 비워둔다. NBSP는 직접 입력이 어렵기 때문에 다른 셀에서 =CHAR(160)을 만든 뒤 복사하여 찾기 상자에 붙여넣는다.

15. 데이터 유효성 검사로 선제 차단

입력 단계에서 선행·후행 공백을 금지하는 규칙을 만들면 사후 정리 비용이 줄어든다.

=EXACT(A2,TRIM(A2))

위 논리를 데이터 유효성 검사 > 사용자 지정 수식으로 적용하면 공백이 낀 입력을 거부한다.

16. XLOOKUP과의 안전한 결합

조회 전후로 모두 공백 정규화를 적용한다.

=XLOOKUP( TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(E2,CHAR(160)," "),UNICHAR(12288)," "))), MAP(A2:A100,LAMBDA(x,TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(x,CHAR(160)," "),UNICHAR(12288)," "))))), B2:B100 )

키와 조회 범위의 정리 규칙을 동일하게 유지하면 불일치 문제가 사라진다.

17. 품질 보증용 검증 컬럼 설계

정리 전후 값의 동등성을 검증하는 컬럼을 추가한다.

=IF(EXACT(B2, 공백정리(A2)), "OK", "FIX")

집계하여 오류율을 추적하면 공급원 데이터 품질을 가시화할 수 있다.

18. 업무별 실전 예제

18.1 고객명 데이터 정리

=PROPER(TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160)," "),UNICHAR(12288)," "))))

고객명 내부의 다중 공백을 하나로 축소하고 제어문자를 제거한 뒤 표준 대소문자로 통일한다.

18.2 주소 라인 병합

=TEXTJOIN(" ", TRUE, TRIM(CLEAN(SUBSTITUTE(B2,CHAR(160)," "))), TRIM(CLEAN(SUBSTITUTE(C2,CHAR(160)," "))), TRIM(CLEAN(SUBSTITUTE(D2,CHAR(160)," "))) )

NULL 및 공백만 있는 항목을 자동으로 건너뛰면서 주소 라인을 병합한다.

18.3 SKU 코드 무공백화

=UPPER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,CHAR(160),"")," ",""),"-",""))

공백과 하이픈을 제거하고 대문자로 표준화하여 식별 키로 사용한다.

19. 오류 대처 팁

  • 서식이 “텍스트”인 셀에서 수식 결과가 보이지 않으면 셀 서식을 일반으로 바꾸고 F2 후 Enter로 재계산한다.
  • 데이터 가져오기 직후 공백 문제가 반복되면 가져오기 단계에서 쿼리 규칙으로 공백 정리 단계를 포함한다.
  • NBSP가 보이지 않더라도 길이 비교로 감지 가능하다. =LEN(A2)-LEN(SUBSTITUTE(A2," ",""))로 일반 공백 수를 세고, 예상과 다르면 NBSP 가능성을 고려한다.

20. 성능 최적화 전략

  1. LET으로 중간 결과를 캐시하여 재계산량을 줄인다.
  2. 필요한 열에만 정리 수식을 적용하고 결과는 값 붙여넣기로 고정한다.
  3. 대용량 파일은 파워 쿼리로 전처리 후 시트로 로드한다.
=LET(t, A2, t1, SUBSTITUTE(t,CHAR(160)," "), TRIM(CLEAN(t1)))

21. 현업 배포용 체크리스트

항목체크내용통과 기준
입력 차단유효성 검사로 선행·후행 공백 거부 설정을 했는가TRUE
NBSP 처리CHAR(160) 치환 로직이 포함되었는가포함
전각 공백UNICHAR(12288) 치환 로직이 포함되었는가포함
검증 컬럼정리 전후 EXACT 비교로 품질을 측정하는가OK/FIX 지표 산출
자동화파워 쿼리 또는 LAMBDA로 재사용 가능한 파이프라인을 구성했는가구성
성능LET 활용 및 값 붙여넣기로 재계산 최소화했는가최적

22. 자주 묻는 질문(FAQ)

TRIM을 적용했는데 변화가 없다. 왜 그런가

NBSP(CHAR(160))나 전각 공백(U+3000) 등 일반 공백이 아닌 문자가 포함되었을 가능성이 높다. SUBSTITUTE로 해당 문자를 일반 공백으로 치환한 뒤 CLEANTRIM을 연계해야 한다.

모든 공백을 완전히 제거하고 싶다

단어 사이 공백까지 제거하려면 =SUBSTITUTE(SUBSTITUTE(A2,CHAR(160),"")," ","")를 사용한다. 코드 필드 등 공백이 허용되지 않는 경우에만 적용한다.

숫자 셀에서 공백 제거 후 값이 텍스트로 남아 있다

VALUE 또는 단항 더하기(--)를 사용해 숫자로 강제 변환한다. 예: =VALUE(SUBSTITUTE(A2," ",""))이다.

파워 쿼리와 시트 수식 중 무엇을 써야 하나

데이터가 반복·대용량이면 파워 쿼리가 유리하다. 일회성·소량이면 시트 수식이 빠르다. 표준 프로세스라면 파워 쿼리로 규칙을 고정해 재사용한다.

엑셀 버전에 따라 함수 지원이 다르다

동적 배열, MAP, LAMBDA, LET은 최신 365에서 지원한다. 구버전은 보조 열과 복사 채우기를 사용한다. 핵심 로직(TRIM·CLEAN·SUBSTITUTE)은 구버전에서도 동일하게 동작한다.