Regex를 사용하여 Excel에서 공백과 빈 줄 제거

  • 이 공유
Michael Brown

가장 효과적인 방법으로 공백을 처리하고 싶습니까? 정규식을 사용하여 셀의 모든 공백을 제거하고, 여러 공백을 단일 문자로 바꾸고, 숫자 사이의 공백만 잘라내는 등의 작업을 수행할 수 있습니다.

어떤 입력 데이터를 사용하든 거의 공백이 없는 데이터 세트. 대부분의 경우 공백이 좋습니다. 다른 정보를 시각적으로 구분하여 더 쉽게 인식할 수 있도록 여백을 사용합니다. 그러나 경우에 따라 악의가 될 수 있습니다. 여분의 공백은 수식을 엉망으로 만들고 워크시트를 거의 관리하기 어렵게 만들 수 있습니다.

    Excel에서 공백을 자르기 위해 정규식을 사용하는 이유는 무엇입니까?

    정규식을 사용하여 Excel 워크시트에서 공백을 제거하는 방법에 대해 자세히 알아보기 전에 가장 먼저 떠오르는 질문인 Excel에 이미 TRIM이 있는데 왜 정규식을 사용해야 합니까? function?

    차이점을 이해하기 위해 각 경우에 무엇이 공백으로 간주되는지 살펴보겠습니다.

    • 내장 TRIM 함수는 공백 문자 만 제거할 수 있습니다. 7비트 ASCII 시스템에서 값이 32입니다.
    • 정규식은 공백( ), 탭(\t), 캐리지 리턴(\r) 및 새 문자와 같은 몇 가지 다른 형식의 공백을 식별할 수 있습니다. 줄(\n). 또한 이러한 모든 유형과 일치하고 원시 입력을 정리하는 데 매우 유용한 공백 문자 (\s)가 있습니다.데이터.

    뒤에서 일어나는 일을 정확히 알면 솔루션을 찾는 것이 훨씬 더 쉽습니다. 맞습니까?

    Excel에서 정규식을 활성화하는 방법

    기본 Excel이 정규식을 지원하지 않는다는 것은 잘 알려진 사실입니다. 이를 활성화하려면 사용자 지정 VBA 함수를 생성해야 합니다. 다행히 RegExpReplace 라는 이름이 이미 있습니다. 잠깐, 제거에 대해 이야기하는 동안 왜 "교체"합니까? Excel 언어에서 "제거"는 "빈 문자열로 바꾸기"의 또 다른 단어입니다. :)

    함수를 Excel에 추가하려면 이 페이지에서 해당 코드를 복사하여 VBA 편집기에 붙여넣기만 하면 됩니다. , 파일을 매크로 사용 통합 문서 (.xlsm)로 저장합니다.

    참고용 함수 구문은 다음과 같습니다.

    RegExpReplace(text, pattern, replacement, [instance_num] , [match_case])

    처음 세 개의 인수는 필수이며 마지막 두 개는 선택 사항입니다.

    여기서:

    • 텍스트 - 원래 문자열 검색.
    • Pattern - 검색할 정규식.
    • Replacement - 바꿀 텍스트. 제거 공백 하려면 이 인수를
      • 빈 문자열 ("")로 설정하여 모든 공백<11을 완전히 제거합니다>
      • space character (" ") - 여러 공백을 단일 공백으로 교체 character
  • Instance_num (선택 사항) - 인스턴스 번호입니다. 대부분의 경우 모든 인스턴스를 대체하기 위해 생략합니다.(기본값).
  • Match_case (선택 사항) - 텍스트 대소문자 일치 여부(TRUE) 또는 무시(FALSE) 여부를 나타내는 부울 값입니다. 공백의 경우 관련이 없으므로 생략합니다.
  • 자세한 내용은 RegExpReplace 함수를 참조하십시오.

    정규식으로 공백을 제거하는 방법 - 예

    통합 문서에 RegExpReplace 기능이 추가되었습니다. 한 번에 하나씩 다양한 시나리오를 다루겠습니다.

    정규식을 사용하여 모든 공백 제거

    문자열의 모든 공백을 제거하려면 다음을 포함한 공백 문자를 검색하기만 하면 됩니다. 공백, 탭, 캐리지 리턴 및 줄 바꿈을 입력하고 빈 문자열("")로 바꿉니다.

    패턴 : \s+

    Replacement : ""

    원본 문자열이 A5에 있다고 가정하면 B5의 수식은 다음과 같습니다.

    =RegExpReplace(A5, "\s+", "")

    패턴을 쉽게 관리할 수 있도록 , 미리 정의된 셀에 정규식을 입력하고 $A$2와 같은 절대 참조를 사용하여 수식에 제공할 수 있으므로 수식을 열 아래로 복사할 때 셀 주소가 변경되지 않습니다.

    =RegExpReplace(A5, $A$2, "")

    두 개 이상의 공백 제거

    추가 공백 을 제거하려면(즉, n 하나의 연속 공백), 동일한 정규식 \s+를 사용하지만 찾은 일치 항목을 단일 공백 ​​문자로 바꿉니다.

    패턴 : \s+

    대체 : " "

    =RegExpReplace(A5, "\s+", " ")

    이 수식은데이터 세트 아래에서 여러 줄을 그대로 유지하면서 모든 선행/후행 공백과 중간 공백을 제외한 모든 공백을 제거한다고 가정합니다. 이 작업을 수행하려면 두 가지 RegExpReplace 함수가 필요합니다.

    첫 번째 함수는 여러 공백을 단일 공백 ​​문자로 바꿉니다.

    =RegExpReplace(A5, " +", " ")

    다른 함수는 공백을 제거합니다. 줄의 시작과 끝에서:

    =RegExpReplace(A5, "^ +| +$", "")

    두 함수를 다른 함수에 중첩하면 됩니다.

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")

    완벽한 결과:

    여러 공백을 한 문자로 바꾸는 정규식

    문자열에서 모든 공백을 제거하고 각 연속 공백 그룹을 바꾸려는 경우 특정 문자로 다음 작업을 수행해야 합니다.

    먼저 이 정규식을 사용하여 선행 및 후행 공백을 제거합니다.

    =RegExpReplace(A8, "^[\s]+|[\s]+$", "")

    그런 다음 위의 기능을 제공합니다. 하나 이상의 연속 공백을 지정한 문자로 대체하는 다른 RegExpReplace의 text 인수로. 하이픈:

    패턴 : \s+

    교체 : -

    소스 문자열이 A8에 있다고 가정하면 수식은 다음 모양을 취합니다:

    =RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")

    또는 스크린샷에 표시된 것처럼 별도의 셀에 패턴과 교체를 입력할 수 있습니다.

    Regex 빈 줄을 제거하려면

    한 셀에 여러 줄이 있는 사용자가 자주 묻는 질문이 있습니다.각 셀을 살펴보고 각 줄을 수동으로 삭제하는 것 외에는 제거하시겠습니까?" 대답: 간단합니다!

    현재 줄의 시작 ^부터 문자가 하나도 없는 빈 줄을 일치시키려면 다음 줄 \n, 정규식은 다음과 같습니다.

    패턴 : ^\n

    시각적으로 비어 있는 줄에 공백이나 탭이 포함된 경우 다음 정규식을 사용하세요.

    패턴 : ^[\t ]*\n

    이 공식을 사용하여 정규식을 빈 문자열로 바꾸면 모든 빈 줄이 한 번에 사라집니다!

    =RegExpReplace(A5, $A$2, "")

    정규식 도구로 공백 제거

    위의 예는 정규식이 제공하는 놀라운 가능성의 일부에 불과합니다. 클래식 정규식의 기능을 VBA에서 사용할 수 있습니다.

    다행히도 Ultimate Suite에 포함된 RegEx 도구는 Microsoft의 .NET RegEx 엔진에서 처리되기 때문에 이러한 제한이 없습니다. 이를 통해 보다 정교한 패턴을 구성할 수 있습니다. VBA RegExp에서 지원하지 않습니다. w 이러한 정규식의 예를 찾을 수 있습니다.

    숫자 사이의 공백을 제거하는 정규식

    영숫자 문자열에서 숫자 사이의 공백만 제거하려고 한다고 가정하면 다음과 같은 문자열이 "A 1 2 B"는 "A 12 B"가 됩니다.

    두 숫자 사이의 공백을 일치시키려면 다음 둘러보기를 사용할 수 있습니다.

    패턴 : (?<=\d)\s+(?=\d)

    수식을 기반으로 만들려면위의 정규식에서 수행할 수 있는 두 가지 간단한 단계는 다음과 같습니다.

    1. Ablebits Data 탭의 Text 그룹에서 Regex를 클릭합니다. Tools .

    2. Regex Tools 창에서 소스 데이터를 선택하고 정규식을 입력한 다음 제거 를 선택합니다. 옵션을 선택하고 제거 를 누르십시오.

      값이 아닌 수식으로 결과를 얻으려면 수식으로 삽입 확인란을 선택해야 합니다.

    잠시 후 원본 데이터 오른쪽의 새 열에 AblebitsRegexRemove 함수가 삽입된 것을 볼 수 있습니다.

    또는 일부 셀에 정규식을 입력할 수 있습니다. , A5라고 하고 함수 삽입 대화 상자를 사용하여 셀에 수식을 직접 삽입합니다. 여기서 AblebitsRegexRemove AblebitsUDFs .

    아래에 분류됩니다. 이 함수는 문자열 제거를 위해 특별히 설계되었으므로 입력 문자열과 정규식의 두 가지 인수만 필요합니다.

    =AblebitsRegexRemove(A5, $A$2)

    정규식을 이용한 엑셀. 읽어주셔서 감사하고 다음 주 블로그에서 뵙기를 기대합니다!

    사용 가능한 다운로드

    정규식으로 공백 제거 - 예제(.xlsm 파일)

    Ultimate Suite - 평가판(.exe 파일)

    단어뿐만 아니라 문자열의 시작과 끝에 있는 것도 좋지 않습니다. 선행 및 후행 공백을 제거하려면 위 수식을 처음과 끝에서 공백을 제거하는 다른 RegExpReplace 함수에 중첩합니다.

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")

    Regex to 선행 및 후행 공백 제거

    줄의 시작 또는 끝에서 공백을 검색하려면 시작 ^ 및 종료 $ 앵커를 사용합니다.

    Leading whitespace:

    패턴 : ^[\s]+

    후행 공백:

    패턴 : [\s ]+$

    선행 후행 공백:

    패턴 : ^[\s]+

    Michael Brown은 소프트웨어 도구를 사용하여 복잡한 프로세스를 단순화하려는 열정을 가진 열성적인 기술 애호가입니다. 기술 산업에서 10년 이상의 경험을 쌓은 그는 Microsoft Excel 및 Outlook은 물론 Google 스프레드시트 및 문서 도구에 대한 기술을 연마했습니다. Michael의 블로그는 자신의 지식과 전문 지식을 다른 사람과 공유하는 데 전념하며 따라하기 쉬운 팁과 생산성 및 효율성 향상을 위한 자습서를 제공합니다. 노련한 전문가이든 초보자이든 Michael의 블로그는 이러한 필수 소프트웨어 도구를 최대한 활용하기 위한 귀중한 통찰력과 실용적인 조언을 제공합니다.