본문 바로가기
엑셀 팁(excel)/엑셀 매크로 VBA

엑셀 텍스트 나누기 매크로 #9

by Emlog 2023. 12. 11.

텍스트 나누기 매크로

데이터를 추출하고 그 데이터를 엑셀에서 관리, 분석하려는 경우가 종종 발생한다. 이때 복사, 붙여 넣기를 엑셀에서 시도했다면 한셀에 모든 텍스트가 담기기도 한다. 매크로를 사용하지 않았다면 보편적인 방법인 텍스트 나누기를 시도한다. 구분선을 하나하나 찍어 텍스트를 나누기도 한다. 하지만 10자 이상의 텍스트라면 분리하는데 조금 힘들어진다.

이번 매크로는 텍스트를 몇 자씩 끊어서 나누고 나는 것을 여러 셀에 담아 나열하는 매크로이다. 간단하게 설명하면 텍스트를 나누고 각 셀에 나열하는 것이다. 2자리씩, 3자리씩... 나눠진 결과를 2열씩, 3열씩 나열하는 것을 말한다. 예제를 보면 이해가 빠를 것이다.

 

 

 

엑셀 매크로 텍스트 나누기 예시1

매크로 동작 방법 및 코드

코드가 길어 보이지만 동작 과정은 간단하다. 몇 자리로 나눌 것인지, 또 이것을 몇 개의 셀로 나눠 표시할지에 대한 비중이 많아 코드가 길어 보이는 것이다. (코드는 아래 *. txt 공유)

  • 나눌 텍스트의 대상은 A1 셀의 값.
  • 매크로 실행.
  • A2 셀부터 3자리씩(변경가능) 나누어 표기.
  • 열 방향으로 5개의 셀에 표기.
  • 열 5개가 채워지면 행 방향 다시 반복.
Sub 텍스트나누기매크로()
    Dim 원본셀 As Range, 결과범위 As Range
    Dim 텍스트 As String, 나눈텍스트() As String
    Dim i As Integer, j As Integer, 행카운트 As Integer
    
    Set 원본셀 = Range("A1")
    텍스트 = 원본셀.Value
    
    ReDim 나눈텍스트(1 To Len(텍스트) / 3)
    For i = 1 To Len(텍스트) Step 3
        나눈텍스트((i + 2) \ 3) = Mid(텍스트, i, 3)
    Next i
    
    Set 결과범위 = Range("A2")
    
    For j = 1 To UBound(나눈텍스트)
        결과범위.Cells(1, (j - 1) Mod 5 + 1).Value = 나눈텍스트(j)
        
        If j Mod 5 = 0 Then
            Set 결과범위 = 결과범위.Offset(1, 0)
            행카운트 = 행카운트 + 1
        End If
    Next j
    
    If 행카운트 = 0 Or 행카운트 Mod 5 <> 0 Then
        Set 결과범위 = 결과범위.Offset(1, 0)
    End If
End Sub

엑셀 매크로 텍스트 나누기 예시2

매크로 실행(텍스트 나누기)

매크로가 실행되면 A1의 대상을 참조하고 그에 대한 결과 값은 A2부터 표기한다. 현재 매크로에 포함된 내용은 3자리씩 나누고 결과 값은 각각 열 방향으로 5개 셀에 표기한다. 표기할 값이 많다면 다음 행 방향으로 반복되어 표기된다.

엑셀 매크로 텍스트 나누기 예시3
엑셀 매크로 텍스트 나누기 예시4

예시로 사용된 대상 값은 54자리의 텍스트이다. ("-" 포함) 텍스트를 3자리씩 나누어 A2 설부터 표기한다. A2 셀에는 "USJ" 값이 담기고, B2 셀에는 "KK-" 값이 담긴다. 반복되어, E2 셀에는 "DEE"의 값이 담기고 다음 항으로 넘어가 A3 설부터 나머지 값들이 담긴다.

설명이 복잡하지만 텍스트를 나누는 것은 둘째치고 결괏값이 한 행에 전부 표기하면 보기도 불편하고 스크롤을 옆으로 이동하여하는 과정도 포함될 것이다. 5개의 셀씩 횡 방향으로 조금씩 잘라 표기하면 가공하기도 편할 것이다.

매크로 응용 및 공유

3자리씩이 아닌 5자리로 나누어 표기하고 싶다면 아래와 같이 변경하면 된다.

  • 3 -> 5
  • 2 -> 4 (i + 2에서 i+4)

5개의 셀씩 표기하는 것이 아닌 8개의 셀에 나누어 표기하고, 모자란다면 다음 행에서 다시 표기하기 원한다면 아래와 같이 변경하면 된다.

  • 5 -> 8

변경이 완료되고 매크로를 실행해 보면 앞서 설명한 결과와 같이 원하는 값을 얻을 수 있을 것이다. 아울러, A1, A2의 문구를 찾아서 대상과 시작 기준 셀을 변경할 수도 있으니 참조하는 것도 좋다.

 

엑셀 매크로#8.txt
0.00MB

 

엑셀 매크로 텍스트 나누기 예시5
엑셀 매크로 텍스트 나누기 예시6
엑셀 매크로 텍스트 나누기 예시7

 

엑셀 매크로(vba)로 편하게 엑셀 하기

 

'엑셀 매크로로 편하게 엑셀하기

사무실 일잘러의 가장 필요한 팁들

minidrawer.tistory.com

 

 

 

 

 

엑셀 매크로 텍스트 나누기