엑셀 VBA 문자열, 텍스트 숫자를 문자열 숫자로 변경하는 방법

엑셀(Excel)/VBA

엑셀 VBA 문자열, 텍스트 숫자를 문자열 숫자로 변경하는 방법

 

환경: Microsoft Excel 2013

 

다른 프로그램이나 엑셀 파일에서 데이터를 복사해 오는 경우 숫자인데도 붙여 넣기를 하면 텍스트로 지정이 됩니다. 이 때 셀을 전체 선택해서 형식을 바꿔 주면 되겠지만 중간에 숫자 텍스트가 아닌 것들이 있을 수 있어서 일일이 영역을 지정해 줘야 합니다. 작업할 데이터가 많은 경우 쉽지 않겠죠. 좀 더 빠르고 정확하게 작업을 하고 싶다면 매크로를 작성해서 돌려 보세요. 

 

데이터를 텍스트에서 숫자로 변경하기 위해 매크로 함수를 만들었습니다. 매크로는 함수명 앞에 Function 이 아닌 Sub 가 붙습니다. 변환 함수에서 제일 먼저 체크해야 될 것이 범위를 지정하는 것입니다. 샘플에 있는 데이터 영역은 A 열입니다. Range() Cell() 함수를 통해 첫 번째 행 부터 Rows.Count 만큼 영역을 지정했습니다. 그리고 지정한 영역을 하나씩 체크하기 위해 For Each .. In 반복문을 사용했습니다. 반복문 안에는 셀 데이터가 숫자인지 판단하는 IsNumeric() 함수가 있어야겠죠. 숫자 텍스트가 아니면 Format 에서 정상적인 출력이 안되겠죠. Format 은 셀 서식에서 사용자 지정을 적용한 것과 같습니다. Format 에서 “#” 을 적용하면 데이터가 숫자로 변경됩니다.

 

Sub ChangeStrToInt()

    Dim rng As Range

    Dim ea As Range

    Dim num As Integer

   

    Application.ScreenUpdating = False ' 화면업데이트 중지

    Set rng = Range(Cells(1, "A"), Cells(Rows.Count, "A").End(3)) ' 범위지정

   

    On Error Resume Next

    For Each ea In rng

        If IsNumeric(ea) Then

            ea = Format(ea, "#") '// 정상처리됨

        End If

    Next ea

 

    Set rng = Nothing

End Sub

 


아래 그림처럼 텍스트 형식으로 지정된 숫자 입니다. 이것을 숫자로 바꿔보도록 하겠습니다.

엑셀 VBA 문자열, 텍스트 숫자를 문자열 숫자로 변경하는 방법

 

위에서 만든 함수를 VBA 에디터에 입력하게 되면 아래 그림처럼 매크로 이름에 함수명이 나타납니다. 매크로 이름을 선택하고 실행을 누르시면 함수가 작동하게 됩니다.

엑셀 VBA 문자열, 텍스트 숫자를 문자열 숫자로 변경하는 방법

 

매크로 함수를 끝내고 나면 아래 그림처럼 형식은 그대로 있고 데이터가 숫자로 변경이 되었죠. 느낌표가 뜨는 것은 형식에 맞지 않은 데이터가 들어가 있다는 뜻입니다. 이것을 한번에 수정하시려면 느낌표 영역을 선택한 후 데이터 형식을 [텍스트]에서 [일반]으로 변경해 주시면 됩니다.

엑셀 VBA 문자열, 텍스트 숫자를 문자열 숫자로 변경하는 방법

 

Posted by 녹두장군