엑셀(Excel) VBA – 문자열에서 숫자, 대문자, 소문자, 한글추출하기 |
환경 : Microsoft Excel 2010 |
문자열을 하나하나 쪼개서 숫자, 영문대문자, 소문자, 한글 등을 분리해 낼수 있습니다. 이전에 글에서 보았듯이 숫자와 연산자만 추출해서 계산을 할수도 있고 사용자가 제대로 입력했는지 체크할수 있습니다. 이렇게 다양하게 사용할수 있는 소스입니다.
▼ 함수는 두개의 인수로 이루어 지는데 영역과 구분자입니다. 아래 그림과 같이 Div 인수에 값을 넣으면 해당하는 값을 리턴합니다.
Div = 1 숫자추출 Div = 2 소문자추출 Div = 3 대문자추출 Div = 4 한글추출 Div = 5 기타문자 |
▼ 문자열을 하나하나씩 분리해서 판단하는데 Len 함수로 문자열의 길이만큼 For 문을 돕니다. 그리고 문자열을 하나씩 추출하는 함수는 Mid() 입니다.
strData = cell.Value For i = 1 To Len(strData) strTemp = Mid(strData, i, 1) Next |
▼ 추출한 함수를 Select Case 문으로 구분하여 미리 만들어둔 String 변수에 저장합니다. Case 문에 To 을 써서 범위를 지정할수 있습니다. “0” To “9” 이면 그 문자에 해당하는 것들은 다 걸러낼수 있습니다. 이런식으로 소문자, 대문자, 한글도 가능한 것이죠.
Select Case strTemp Case "0" To "9" strNumber = strNumber + strTemp Case "A" To "Z" strUpper = strUpper + strTemp Case "a" To "z" strLower = strLower + strTemp Case "ㄱ" To "ㅎ" strHan = strHan + strTemp Case Else strElse = strElse + strTemp End Select |
▼ 다음은 Select Case 를 이용해 숫자, 영문, 한글, 기타등을 저장한 문자열을 구분해서 리턴하는 소스 입니다. 두번째 인수로 넘어온 div 값으로 판단합니다.
Select Case div Case 1 문자열분리 = strNumber '' 숫자추출 Case 2 문자열분리 = strLower '' 소문자추출 Case 3 문자열분리 = strUpper '' 대문자추출 Case 4 문자열분리 = strHan '' 한글 추출 Case 5 문자열분리 = strElse '' 기타문자 End Select |
▼ 아래는 문자열을 구분해서 추출하는 함수의 전체 내용입니다.
Function 문자열분리(cell As Range, div As Integer)
Dim strData As String Dim strNumber As String Dim strLower As String Dim strUpper As String Dim strElse As String Dim strHan As String
strData = cell.Value For i = 1 To Len(strData) strTemp = Mid(strData, i, 1)
Select Case strTemp Case "0" To "9" strNumber = strNumber + strTemp Case "A" To "Z" strUpper = strUpper + strTemp Case "a" To "z" strLower = strLower + strTemp Case "ㄱ" To "힣" strHan = strHan + strTemp Case Else strElse = strElse + strTemp End Select Next
Select Case div Case 1 문자열분리 = strNumber '' 숫자추출 Case 2 문자열분리 = strLower '' 소문자추출 Case 3 문자열분리 = strUpper '' 대문자추출 Case 4 문자열분리 = strHan '' 한글 추출 Case 5 문자열분리 = strElse '' 기타문자 End Select End Function |
▼ 위의 함수에 div 인수를 따로 줘서 추출한 화면입니다. 결과값이 제대로 추출된 것을 볼수 있습니다.
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 동일한 셀의 배경색을 구분하여 값을 합산하는 방법 (7) | 2018.02.01 |
---|---|
엑셀 Excel UserForm 에 멀티 페이지 구현을 위해 탭 추가하는 방법 (0) | 2017.09.26 |
엑셀(Excel) VBA – Application.Version 개체로 엑셀 버전과 사용언어 알아보기 (0) | 2014.12.29 |
엑셀(Excel) VBA – 셀에 적용된 같은 배경색 데이터 합산하기 (7) | 2014.12.28 |
엑셀(Excel) VBA – Application.Evaluate 함수 이용해서 수식문자열계산하기 (2) | 2014.12.23 |
엑셀(Excel) VBA – 수식을 문자열로 바꾸는 사용자정의 함수 만들기 (0) | 2014.12.22 |
엑셀(Excel) VBA – Application.Volatile 함수로 사용자정의함수 재구동 (2) | 2014.12.21 |
엑셀(Excel) VBA – 선택한 셀시트명, 파일명, 위치를 알아오는 사용자정의함수 (0) | 2014.12.20 |