'문자 분리'에 해당되는 글 1건

728x90

[VBA] 셀 분리하여 현재 시트에 뿌리기



엑셀에서 문자를 분리하고 싶은 경우가 있습니다.

이럴 경우 분리하는 방법으로 Split 함수를 이용하는 방법도 있고, Instr 함수를 이용하는 방법도 있습니다.

Instr 함수는 분리 구분자의 위치를 반환하여 MID함수랑 같이 사용하여 분리할 수 있습니다.


단순하게 구분자(delimiter)로 분리만 한다면 Split 함수가 편합니다.


분리한 것을 현재 셀에다가 할 것인가 아니면 옆에 있는 셀에다가 표시할 것인가를 먼저 정합니다.

옆셀에다가 뿌리는 것은 Offset 함수를 사용합니다.

Offset(,2) 는 Offset(0,2) 로 같은 행, 열 2 이동하라는 의미입니다.


Sub Cell_MultiSplit()
    Dim rngC    As Range   '// 한 Cell 씩 변하는 변수 지정
    Dim rngTarget As Range '// 대상 범위 지정변수
    Dim varTemp() As String  '// 전체영역을 넣기위한 variant형 string 변수
    Dim deLimiter As String  '// 문자 구분자 변수
   
    Application.ScreenUpdating = False  '// 화면 업데이트 (일시)정지

    Set rngTarget = Columns(1).SpecialCells(2)
    '// SpecialCells(2) : 상수가 들어있는 셀
  
    deLimiter = "/"       '//문자 구분자
    For Each rngC In rngTarget
        varTemp = Split(rngC, deLimiter)  '//선택한 셀을 쪼개서 배열에 넣음
        rngC.Offset(, 2).Resize(1, UBound(varTemp) + 1) = varTemp
        '// Resize(RowSize,ColumnSize) : 지정된 범위의 크기를 조정
        '// Rowsize : 새 범위의 행 수를 지정
        '// ColumnSize : 새 범위의 열 수를 지정
        '// Ubound(arrayname, dimension) : 배열에서 지정된 차원의 최대 범위를 Long으로 반환
        '// arrayname : 배열 변수의 이름
        '// dimension 은 생략하면 1차원을 의미
    Next rngC
    
    Set rngTarget = Nothing '// 변수 초기화
    Columns("C:G").AutoFit
End Sub


Cell_Split_VBA.vbs


Cell_Split_VBA.xlsm


위 VBA 코드를 복사하여 Alt + F11 키 누른다음 삽입 --> 모듈 눌러서 나오는 화면에 붙여넣기 하세요.

그리고 매크로 버튼만들기(http://link2me.tistory.com/151) 하고 연결시키면 됩니다.


SpecialCells(2) 의 의미가 뭔지 알고 싶다면 엑셀에서 도움말 F1를 눌러보세요.



Resize 를 해주는 이유는 구분자(delimiter)로 분리되는 배열(varTemp)의 범위가 동적으로 변할 수 있어서 입니다.

Resize(1,n) 이라는 건 행은 1이고 열의 크기는 n 으로 변한다는 것

rngC, rngTarget 개념 설명은 다른 게시물 http://link2me.tistory.com/215 참조하면 되요.


실행결과는




Resize 를 배열변수 고려없이 그냥 상수(숫자)로 직접 지정하면 어떤 변화가 일어나는지 확인해보면 압니다.



블로그 이미지

Link2Me

,