엑셀·구글시트 자동화 실험No. 146
텍스트 나누기로 주소 칸 분리할 때 빈칸 때문에 열이 밀린다면
결론부터
한 셀에 모인 내용을 여러 칸으로 나눌 때는 구분 문자와 빈 항목 처리 기준을 함께 정해야 합니다. 엑셀의 TEXTSPLIT과 구글시트의 SPLIT을 사용하면 원본을 남긴 채 결과를 옆 열로 펼칠 수 있습니다. 다만 공백마다 자르면 하나로 묶어야 할 내용까지 갈라지므로, 먼저 일정한 구분 문자가 있는지 살펴야 합니다.
나눌 기준과 결과 칸을 먼저 정합니다
핵심 요약
나눌 기준 정하기
- A열 원본을 B열부터 분리
- 세로 막대를 경계로 사용
- 항목 안 띄어쓰기는 유지
이번 작업은 A열에 들어 있는 문자열을 B열부터 가로로 나누는 방식입니다. 설명용 원본은 '기본값|상세값|분류값'으로 정합니다. 실제 개인정보가 아닌 구조 확인용 문구입니다. 세 항목 사이의 세로 막대가 경계가 되며, 항목 안에 들어 있는 띄어쓰기는 그대로 남깁니다.
결과를 만들기 전에 각 열에 어떤 항목이 들어갈지 정합니다. B열은 첫 항목, C열은 둘째 항목, D열은 셋째 항목으로 사용합니다. 중간 항목이 비어 있어도 다음 항목이 들어갈 열은 유지한다는 기준입니다. 이 기준이 없으면 겉으로는 잘 나뉘어 보여도 서로 다른 종류의 값이 같은 열에 섞입니다.
원본에 세로 막대가 없고 공백만 있다면 바로 수식을 적용하지 않습니다. 항목 안의 공백과 항목 사이의 공백을 구별할 수 있는지 먼저 살핍니다. 띄어쓰기 개수가 다르거나 일부 항목이 생략된 자료는 공백으로 나누는 것만으로 같은 구조를 만들기 어렵습니다.
- 원본 열을 복사해 별도 작업용 시트를 만듭니다
- 항목 사이에 반복되는 구분 문자를 확인합니다
- 결과가 펼쳐질 오른쪽 칸을 비워 둡니다
- 첫 데이터 행에 수식을 입력합니다
- 빈 항목이 있는 행까지 확인한 뒤 아래 행에 적용합니다
구분 문자를 새로 넣을 때는 원래 내용에 없는 문자를 선택합니다. 원본에 이미 세로 막대가 포함되어 있다면 다른 기호를 정해야 합니다. 문자의 모양보다 실제 데이터 안에서 경계를 일관되게 가리키는지가 판단 기준입니다.
같은 기준으로 두 수식을 입력합니다
엑셀에서 TEXTSPLIT을 사용할 수 있는 환경이라면 B2에 다음 수식을 입력합니다. A2는 원본이 들어 있는 셀입니다. 수식을 넣는 B2와 원본 A2를 서로 다른 칸으로 두어야 합니다.
=TEXTSPLIT(A2,"|",,FALSE)
구글시트에서는 같은 자리에 다음 수식을 입력합니다. 아래 수식도 중간의 빈 항목을 남기는 설정입니다. 두 수식은 비슷한 결과를 만들지만 인수의 자리가 다르므로 그대로 구분해서 사용합니다.
=SPLIT(A2,"|",FALSE,FALSE)
빈 항목이 있을 때
| 항목 | 모두 입력 | 둘째 누락 |
|---|---|---|
| 첫째 칸 | 기본값 | 기본값 |
| 둘째 칸 | 상세값 | 빈칸 유지 |
| 셋째 칸 | 분류값 | 분류값 |
A2가 '기본값|상세값|분류값'이면 결과는 옆으로 세 칸에 펼쳐집니다. A2가 '기본값||분류값'이면 가운데 결과 칸을 비워 두고 셋째 칸에 분류값을 넣습니다. 입력되지 않은 둘째 항목 때문에 셋째 항목의 열이 바뀌지 않도록 하는 설정입니다.
빈 항목을 남겨야 뒤에 있는 값도 처음 정한 열에 그대로 들어갑니다.
원본이 비어 있을 때 결과도 비워 두려면 조건을 바깥에 추가합니다. 엑셀에서는 다음 수식을 사용합니다.
=IF(A2="","",TEXTSPLIT(A2,"|",,FALSE))
구글시트에서는 다음과 같이 작성합니다.
=IF(A2="","",SPLIT(A2,"|",FALSE,FALSE))
이 조건은 A2가 빈 셀이거나 수식 결과로 빈 문자열을 반환할 때 분리 계산을 건너뛰게 합니다. 공백 문자만 들어 있는 셀까지 같은 상태로 판단하는 조건은 아닙니다. 내용이 없어 보이는데 결과가 다르면 입력줄에서 공백이 남아 있는지 살펴야 합니다.
여러 행에 적용할 때는 B2를 아래로 복사합니다. 다음 행에서는 참조가 A3, A4로 바뀌는지 확인합니다. 오른쪽으로 펼쳐지는 결과 칸에는 별도 수식을 복사하지 않습니다. 원본 한 행마다 맨 왼쪽 결과 칸에 수식 하나를 두는 구조입니다.
쉼표 사이의 설정을 읽어 봅니다
TEXTSPLIT에서 A2 다음의 "|"는 열을 나누는 문자입니다. 그다음 비어 있는 인수는 행을 나누는 구분 문자를 지정하지 않았다는 뜻입니다. 마지막 FALSE는 빈 항목을 무시하지 않도록 설정합니다. 연속된 구분 문자 사이에 값이 없으면 그 자리를 빈 결과로 남깁니다.
SPLIT의 첫 FALSE는 구분 문자를 글자별로 따로 취급하지 않도록 합니다. 지금처럼 한 글자를 사용할 때는 차이가 드러나지 않지만, 구분 문자가 여러 글자일 때는 의미가 있습니다. 마지막 FALSE는 빈 항목을 제거하지 않는 설정입니다. 두 FALSE는 서로 다른 일을 합니다.
예를 들어 구분 문자를 "::"로 정했다면 구글시트 수식은 =SPLIT(A2,"::",FALSE,FALSE)입니다. 여기서는 콜론 두 개가 이어진 문자열을 하나의 경계로 읽습니다. 첫 FALSE를 생략하면 구분 문자의 각 글자를 기준으로 처리할 수 있으므로, 여러 글자로 된 경계를 사용할 때는 설정을 확인해야 합니다.
수식에 들어가는 큰따옴표는 문자를 직접 지정하는 표시입니다. 셀 참조 A2에는 큰따옴표를 붙이지 않습니다. "A2"라고 입력하면 셀 내용을 읽는 대신 A2라는 글자를 대상으로 계산합니다. 구분 문자만 바꿀 때는 큰따옴표 안의 내용만 수정합니다.
체크리스트
수식과 결과 영역 확인
- 셀 참조에 큰따옴표 빼기
- 오른쪽 기존 값 확인
- 병합 셀과 남은 수식 확인
- 기존 내용 보존 시 시작 칸 이동
결과가 펼쳐지지 않을 때는 오른쪽 칸에 기존 값이나 병합된 셀이 있는지 확인합니다. 비어 보이는 칸에도 수식이 남아 있을 수 있습니다. 기존 내용을 보존해야 한다면 결과를 넣을 시작 칸을 옮깁니다. 필요한 데이터인지 살피기 전에 결과 영역을 한꺼번에 지우지 않습니다.
엑셀에서 함수 이름을 인식하지 못하면 해당 환경에서 TEXTSPLIT을 사용할 수 있는지 확인합니다. 수식의 구분 문자 설정을 고치는 것과 함수 지원 여부를 확인하는 것은 별개입니다. 지원하지 않는 환경에서는 데이터 메뉴의 텍스트 나누기를 이용하되, 원본을 복사한 범위에서 작업합니다.
다른 형태에 적용할 때 지킬 기준입니다
일정한 세로 막대로 구분된 자료는 그 문자를 기준으로 나누고, 항목 안에 쉼표가 섞인 자료는 쉼표를 경계로 선택하지 않습니다. 구분 방식이 행마다 다른 자료는 먼저 같은 규칙으로 정리합니다. 같은 수식을 모든 행에 넣을 수 있다는 사실만으로 결과의 열 구성이 같아지는 것은 아닙니다.
특히 일반 공백을 경계로 삼으면 항목 내부의 띄어쓰기까지 분리됩니다. 공백이 반복된 행은 빈 항목 설정에 따라 결과 칸 수도 달라집니다. 원하는 것이 의미 단위의 분리라면 문자만 자르는 함수로 처리할 수 있는 범위인지 먼저 판단해야 합니다.
원본 앞뒤의 불필요한 공백을 정리할 때도 주의합니다. TRIM은 일반적인 앞뒤 공백을 정리하면서 내부의 연속된 일반 공백도 줄입니다. 내부 띄어쓰기 자체가 필요한 자료라면 일괄 적용하기 전에 변경되는 내용을 확인합니다. 눈에 비슷하게 보이는 특수 공백은 별도 처리가 필요할 수 있습니다.
텍스트 분리 함수는 정해진 문자를 기준으로 자르며 내용의 뜻을 판단하지 않습니다.
검수할 때는 정상 형태만 보지 않습니다. 중간 항목이 빠진 행, 구분 문자가 추가된 행, 원본이 비어 있는 행을 함께 살핍니다. 구분 문자로 경계를 정했다면 결과 항목 수는 경계 수에 하나를 더한 값이 기준입니다. 다만 빈 항목을 제거하는 설정에서는 이 계산과 결과 칸 수가 달라질 수 있습니다.
작업이 끝난 결과를 고정하려면 분리된 범위를 복사한 뒤 값만 붙여넣습니다. 원본 수정에 따라 결과가 계속 바뀌어야 한다면 수식을 유지합니다. 어느 쪽이 필요한지는 이후 작업에서 원본과 결과를 함께 갱신할지에 따라 정합니다.
엑셀·구글시트 자동화 실험에서 이 작업의 확인 기준은 각 항목이 정해 둔 열에 남는지입니다. 구분 문자, 빈 항목 처리, 결과 영역을 먼저 맞추면 수식을 다른 행에도 같은 기준으로 적용할 수 있습니다.