What I Do

엑셀 마스킹 처리 | 이름·전화번호 일부를 *로 가리는 함수

18분 읽기

엑셀 마스킹 처리는 REPLACE·LEFT·RIGHT·LEN·REPT 함수를 조합해 이름 가운데 글자, 전화번호 가운데 자리, 이메일 아이디 일부를 *로 가리는 방법입니다. Microsoft 공식 도움말 기준으로 수식과 공유 전 확인할 점을 정리했습니다.

엑셀 마스킹 처리 | 이름·전화번호 일부를 *로 가리는 함수

엑셀 마스킹 처리는 원본 셀은 그대로 두고, 옆 열에 함수를 써서 이름·전화번호·이메일의 일부 글자를 * 같은 기호로 바꿔 보여 주는 방법입니다. 위치가 정해진 글자를 바꿀 때는 REPLACE 함수, 앞뒤 몇 글자만 남기고 가운데를 채울 때는 LEFT·RIGHT·LEN·REPT 함수를 조합하면 되는데요. 다만 함수로 가린 것은 「보이는 값」일 뿐이라, 파일을 밖으로 보내기 전에 원본 열을 어떻게 처리할지까지 정해야 마스킹이 끝납니다.

"이벤트 당첨자 명단을 공지해야 하는데, 이름이랑 전화번호를 어떻게 가리지?" 마케팅 일을 하다 보면 당첨자 발표나 외부 협력사 전달처럼 개인정보 일부만 보여 줘야 하는 순간이 생기죠. 수백 명을 한 칸씩 고쳐 쓸 수는 없으니 함수로 한 번에 처리하고 싶어지는데요, 이번 글에서는 Microsoft 공식 도움말을 기준으로 엑셀에서 개인정보 일부를 가리는 수식과, 공유하기 전에 꼭 확인할 점을 정리해 보겠습니다.

엑셀 마스킹 처리는 원본 데이터를 지우는 걸까요?

함수로 하는 마스킹은 원본을 고치는 작업이 아니라 원본을 읽어서 가린 결과를 새 열에 만드는 작업입니다. B열에 전화번호가 있다면 C열에 수식을 넣어 가린 번호를 보여 주는 식인데요, 이렇게 해야 원본이 남아 있어 실수해도 다시 만들 수 있기 때문입니다.

비유하자면 주소 부분만 비닐 창으로 뚫린 창봉투와 비슷합니다. 봉투 안에는 편지 전체가 그대로 들어 있지만 밖에서는 창으로 드러난 부분만 보이죠. 마스킹 열도 마찬가지로 겉으로는 일부만 보이지만, 같은 파일 안에 원본 열이 남아 있다면 봉투를 열어 보는 사람에게는 전부 보이는 셈인데요. 이 차이는 마지막 섹션에서 다시 다루고, 먼저 어떤 함수를 쓰는지부터 볼까요?

1. 엑셀 마스킹에 쓰는 함수는 무엇일까요?

마스킹 수식은 대부분 아래 함수 몇 개의 조합입니다. 설명은 모두 Microsoft 공식 도움말 기준입니다.

함수하는 일마스킹에서 쓰는 곳
REPLACE(old_text, start_num, num_chars, new_text)지정한 위치부터 정한 글자 수를 다른 텍스트로 바꿈전화번호 가운데 4자리처럼 위치가 고정된 부분
LEFT / RIGHT(text, [num_chars])텍스트의 앞 또는 뒤에서 정한 글자 수만큼 가져옴남겨 둘 앞뒤 글자
LEN(text)텍스트의 문자 수를 셈(공백도 문자로 셈)가릴 글자 수 계산
REPT(text, number_times)텍스트를 정한 횟수만큼 반복길이에 맞춰 *를 여러 개 만들기
SEARCH(find_text, within_text)찾는 글자가 몇 번째에 있는지 돌려줌이메일의 @ 위치 찾기
& 연산자텍스트를 이어 붙임조각을 하나로 합치기

REPLACE 함수 도움말의 예제를 보면 =REPLACE(A2,6,5,"*")가 abcdefghijk의 6번째 글자부터 5글자를 * 하나로 바꿔 abcde*k를 돌려주는데요. 여기서 눈여겨볼 점은 바꾸는 글자 수와 넣는 글자 수가 같을 필요가 없다는 것입니다. 그래서 가린 뒤에도 원래 길이를 맞추고 싶다면 new_text에 *를 바꾸는 글자 수만큼 넣어 줘야 합니다.

LEFT 함수와 RIGHT 함수 도움말에 따르면 num_chars를 생략하면 1로 간주하고, 텍스트 길이보다 크게 넣으면 전체 텍스트를 돌려줍니다. REPT 함수 도움말은 반복 횟수가 0이면 빈 텍스트("")를 돌려준다고 설명하는데요, 이 동작이 바로 다음 섹션의 두 글자 이름에서 문제가 됩니다.

2. 이름 가운데 글자를 *로 가리려면?

세 글자 이름만 있다면 가장 간단한 방법은 REPLACE로 두 번째 글자 하나를 바꾸는 것입니다.

=REPLACE(A2,2,1,"*")

A2가 김하늘이면 김*늘이 나옵니다. 그런데 실제 명단에는 두 글자 이름도, 네 글자 이름도 섞여 있죠. 그래서 첫 글자와 마지막 글자만 남기고 가운데를 길이만큼 가리는 수식을 많이 쓰는데요, 이때 두 글자 이름은 따로 처리해야 합니다.

=IF(LEN(A2)=2, LEFT(A2,1)&"*", LEFT(A2,1)&REPT("*",LEN(A2)-2)&RIGHT(A2,1))

두 글자 이름에 뒤쪽 수식을 그대로 쓰면 LEN(A2)-2가 0이 되고, REPT가 빈 텍스트를 돌려주는 바람에 이준이 이준 그대로 나와 버리기 때문입니다. IF로 두 글자일 때만 마지막 글자를 *로 바꾸게 나누면 남궁민수는 남**수, 이준은 이*처럼 길이에 맞게 가려집니다.

엑셀 마스킹 처리 수식으로 이름 가운데 글자와 전화번호 가운데 자리를 별표로 바꾼 시트 예시 예시 그림: B열 이름과 D열 전화번호를 C열·E열 수식으로 가린 모습입니다(가상 데이터, 실제 캡처 아님).

3. 전화번호와 이메일 일부는 어떻게 가릴까요?

전화번호가 010-1234-5678처럼 하이픈까지 같은 형식으로 들어 있다면 가운데 네 자리의 위치가 5번째부터 4글자로 고정되기 때문에 REPLACE 하나로 끝납니다.

=REPLACE(A2,5,4,"****")

결과는 010-****-5678입니다. 다만 하이픈이 없는 번호나 가운데가 세 자리인 번호가 섞여 있으면 엉뚱한 자리가 가려지니, 먼저 옆 열에 =LEN(A2)를 넣어 길이가 모두 같은지 확인해 보시길 권합니다.

뒤 네 자리만 보여 주는 방식은 Microsoft가 ID 번호의 마지막 네 자리만 표시하기 도움말에서 직접 예시를 들고 있는데요. 카드 번호를 =CONCATENATE(REPT("****-",3), RIGHT(B3,4))로 바꿔 ****-****-****-5555처럼 보여 주는 수식입니다. CONCAT 함수 도움말에 따르면 CONCATENATE는 CONCAT으로 대체됐지만 호환성을 위해 계속 쓸 수 있고, & 연산자로도 같은 결과를 낼 수 있어서 =REPT("****-",3)&RIGHT(B3,4)로 써도 됩니다.

이메일은 아이디 길이가 제각각이라 @의 위치를 먼저 찾아야 합니다. 아이디 앞 두 글자만 남기는 수식은 이렇습니다.

=LEFT(A2,2)&REPT("*",SEARCH("@",A2)-3)&MID(A2,SEARCH("@",A2),LEN(A2))

엑셀 이메일 마스킹 수식을 LEFT, REPT, MID 세 조각으로 나눠 각 조각이 만드는 결과를 보여 주는 그림 예시 그림: yena.kim@example.com 이 세 조각을 거쳐 ye******@example.com 이 되는 과정입니다(가상 주소).

SEARCH 함수 도움말대로 SEARCH는 찾는 글자가 몇 번째에 있는지 돌려주고, 찾지 못하면 #VALUE! 오류를 냅니다. MID 함수 도움말 기준으로 MID는 시작 위치부터 정한 글자 수를 가져오는데, 남은 글자보다 많이 지정하면 텍스트 끝까지만 돌려주기 때문에 LEN(A2)를 넉넉한 길이로 넣은 것인데요. 이 수식은 아이디가 세 글자 이상인 주소를 가정한 것이라, @가 빠진 값이나 아이디가 아주 짧은 주소가 섞여 있으면 결과를 한 번 훑어보셔야 합니다.

4. 마스킹한 파일을 공유하기 전에 무엇을 확인해야 할까요?

앞의 창봉투 비유로 돌아가면, 마스킹 열을 만든 파일을 그대로 보내는 것은 편지를 봉투째 건네는 것과 같습니다. Microsoft의 마지막 네 자리 도움말은 원본이 있는 열을 숨기고 워크시트를 보호해 원본을 볼 수 없게 하라고 안내하는데요, 같은 Microsoft의 워크시트 보호 도움말은 워크시트 수준 보호는 보안 기능이 아니라고 분명히 적고 있습니다. 워크시트 보호는 잠긴 셀을 고치지 못하게 막는 기능이고, 암호로 파일 자체를 여는 것을 막는 파일 보호와는 다르다는 설명입니다.

그래서 파일을 외부로 보낼 때는 가린 값만 남긴 사본을 만드는 편이 안전합니다.

  • 1단계: 원본 통합 문서를 복사해 사본을 만듭니다. 수식을 결과로 바꾸기 도움말도 바꾸기 전에 통합 문서를 복사해 두라고 권합니다.
  • 2단계: 사본에서 마스킹 열을 선택해 복사(Ctrl+C)하고 붙여넣기(Ctrl+V)한 뒤, 붙여넣기 옵션에서 「값만」을 고릅니다. 수식이 결과값으로 영구히 바뀝니다.
  • 3단계: 값이 된 것을 확인한 다음 원본 열을 삭제합니다. #REF! 오류 도움말대로 수식이 참조하던 셀을 지우면 #REF! 오류가 나기 때문에, 값으로 바꾸기 전에 원본부터 지우면 안 됩니다.

마스킹한 엑셀 파일을 공유하기 전에 사본 만들기, 값만 붙여넣기, 원본 열 삭제 순서로 정리하는 세 단계 예시 그림: 열 숨기기와 시트 보호 대신, 값만 남긴 사본을 만들어 보내는 순서입니다.

Excel의 보호 및 보안 도움말은 신용 카드 번호나 주민등록번호처럼 중요한 개인 정보가 들어 있을 수 있는 통합 문서는 배포하기 전에 항상 다시 생각해 보라고 하고, 파일 자체를 암호로 잠그는 암호화 방법도 안내합니다. 어디까지 가려야 하는지는 회사의 개인정보 처리 기준이나 담당 부서 안내를 먼저 따르시는 것이 맞습니다.

※ 참고 사항: 버전과 데이터 형식

  • 지원 버전: REPLACE·LEN·REPT·MID·SEARCH 도움말은 적용 대상에 Microsoft 365용 Excel, Excel 2024, 2021, 2019, 2016을 올려 두고 있습니다. 마지막 네 자리 표시 도움말의 적용 대상은 Microsoft 365용 Excel과 Excel 2024, 2021(각 Mac용 포함)입니다.
  • B로 끝나는 함수: REPLACEB·LEFTB·RIGHTB·MIDB·LENB·SEARCHB는 도움말에 더 이상 사용되지 않는다고 적혀 있으니, 바이트가 아니라 글자 수로 세는 B 없는 함수를 쓰시면 됩니다.
  • 공백: LEN은 공백도 한 글자로 세기 때문에, 이름 앞뒤에 스페이스가 들어 있으면 가운데 별표 개수가 달라집니다. 빈칸처럼 보이는 셀을 찾는 방법은 엑셀 공란 표시 글에서 다뤘습니다.

정리하면 엑셀 마스킹 처리는 위치가 고정된 값은 REPLACE로, 길이가 제각각인 값은 LEFT·RIGHT·LEN·REPT 조합으로 가리고, 공유할 때는 값만 남긴 사본을 보내는 것까지가 한 세트입니다. 저도 명단을 다룰 일이 있을 때 이 순서대로 다시 점검해 보려고 하니, 함수별 세부 동작은 위에 건 Microsoft 공식 도움말을 참고해 주세요.

자주 묻는 질문

엑셀에서 이름 가운데 글자만 별표로 바꾸려면 어떻게 하나요?
세 글자 이름만 있다면 =REPLACE(A2,2,1,"*")처럼 두 번째 글자 하나를 바꾸면 됩니다. 두 글자·네 글자 이름이 섞여 있다면 LEN으로 길이를 재고, 첫 글자와 마지막 글자 사이를 REPT로 채우는 수식을 IF로 나눠 쓰는 편이 안전합니다. REPT는 반복 횟수가 0이면 빈 텍스트를 돌려주기 때문에 두 글자 이름은 따로 처리해야 합니다.
엑셀 전화번호 마스킹 수식은 무엇인가요?
010-1234-5678처럼 하이픈을 포함한 같은 형식이라면 =REPLACE(A2,5,4,"****")로 가운데 네 자리를 가릴 수 있습니다. 하이픈이 없거나 가운데 자리 수가 다른 번호가 섞여 있으면 위치가 어긋나니, LEN으로 길이를 먼저 확인해 주세요.
원본 열을 숨기고 시트를 보호하면 안전한가요?
Microsoft 워크시트 보호 도움말은 워크시트 수준 보호가 보안 기능이 아니라고 설명합니다. 잠긴 셀을 고치지 못하게 막는 기능이라, 외부로 보낼 파일이라면 마스킹 열을 값으로 바꾼 사본을 만들고 원본 열을 삭제한 뒤 보내는 편이 안전합니다.

관련 글 더 보기

엑셀 데이터를 정리할 때 함께 보면 좋은 글들입니다.