728x90

[VBA기초] 괄호 제거한 문자열 추출


괄호를 제외한 문자열을 일일이 수작업하는 것은 너무 번거로울 수가 있습니다.

이럴 경우에 아래 VBA 코드를 이용하면 매우 편리합니다.

부연 설명을 드리자면

    ActiveCell.Select
    Set rngAll = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
이 부분은 현재 커서거 있는 셀을 기준으로 그 열 전체를 선택하라는 의미입니다.

만약 B열 등 특정한 열만 선택하고자 한다면

Set rngAll = Range([B2], Cells(Rows.Count, "B").End(3))

이라고 범위를 지정하면 됩니다.

For Each 문은 정해진 구간을 무조건 반복하라는 의미입니다.

InStr 함수를 이용하여 (가 시작되는 위치를 반환하고, )가 시작되는 위치를 반환합니다.

이제 Left 함수와 Mid 함수를 이용하여 원하는 구간만 추출하고 & 로 묶어주고, 결과를 어디에 뿌릴 것인가만 정해주면 됩니다.


Sub 괄호제외한문자열추출()
    '// 문자열 중 ()괄호 밖의 문자열만 따로 추출하기
    Dim rngAll As Range '// 해당 영역을 변수로 지정
    Dim rngC As Range '// 셀을 지정
    Dim startChk As Byte '// (시작위치 변수 지정
    Dim endChk As Byte '// )끝위치 변수 지정
    Dim tmpString As String '// 추출 문자열 임시 저장 변수
 
    Application.ScreenUpdating = False    '// 화면 업데이트 (일시) 중지
    ActiveCell.Select
    Set rngAll = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
 
    For Each rngC In rngAll
        'rngC.Value = Trim(rngC.Value)
        startChk = InStr(rngC.Value, "(")
        endChk = InStr(rngC.Value, ")")
     
        '// ()를 제외한 문자열 추출
        tmpString = Left(rngC, startChk - 1) & Mid(rngC.Value, endChk + 1, Len(rngC) - endChk)
        rngC.Value = tmpString  '// 같은 열에 덮어쓰기
        'rngC.offset(0,1).Value = tmpString '// 바로 옆에 열에 기록하기   
    Next rngC
    Set rngAll = Nothing
    MsgBox "완료"
End Sub




728x90
블로그 이미지

Link2Me

,