VBA 문자열과 문자 처리 함수
VBA에는 코드에서 텍스트와 문자열을 조작하고 작업할 수 있는 다양한 문자열 함수가 있습니다. 이 튜토리얼에서는 문자열에서 부분 문자열 추출, 문자열에서 공백 제거, 텍스트 또는 문자열의 대소문자 변환, 문자열 비교 및 기타 유용한 문자열 함수를 사용할 수 있는 함수를 다룰 것입니다.
문자 추출하기
VBA Left 문자열 함수
VBA Left 함수를 사용하면 텍스트 또는 문자열에서 왼쪽부터 시작하는 부분 문자열을 추출할 수 있습니다. VBA 왼쪽 문자열 함수의 구문은 다음과 같습니다:
Left(문자열, 추출할_문자_개수) :
- 문자열- 원본 텍스트입니다.
- 추출할_문자_개수 – 원본 텍스트의 왼쪽부터 시작하여 추출할 문자 수입니다.
다음 코드는 왼쪽 문자열 함수를 사용하여 주어진 문자열의 처음 네 문자를 추출하는 방법을 보여줍니다:
Sub UsingTheLeftStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "AutomateExcel"
valueTwo = Left(valueOne, 4)
MsgBox valueTwo
End Sub
결과는 아래와 같습니다:
Left 함수는 AutomateExcel의 처음 네 글자, 즉 Auto를 추출했습니다.
VBA Right 문자열 함수
VBA Right 함수를 사용하면 오른쪽에서 시작하는 텍스트 또는 문자열에서 부분 문자열을 추출할 수 있습니다. VBA Right 문자열 함수의 구문은 다음과 같습니다:
Right(문자열, 추출할_문자_개수) :
- 문자열- 원본 텍스트입니다.
- 추출할_문자_개수 – 원본 텍스트의 오른쪽부터 시작하여 추출할 문자 수입니다.
다음 코드는 올바른 문자열 함수를 사용하여 문자열의 마지막 네 문자를 추출하는 방법을 보여줍니다:
Sub UsingTheRightStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "AutomateExcel"
valueTwo = Right(valueOne, 4)
MsgBox valueTwo
End Sub
결과는 아래와 같습니다:
Right 함수는 AutomateExcel의 마지막 네 글자, 즉 xcel을 추출했습니다.
VBA Mid 문자열 함수
VBA Mid 함수를 사용하면 문자열 내의 지정한 위치에서 시작하여 텍스트 또는 문자열에서 부분 문자열을 추출할 수 있습니다. VBA Mid 문자열 함수의 구문은 다음과 같습니다:
Mid(문자열, 시작_위치, 문자열_개수) :
- 문자열- 원본 텍스트입니다.
- 시작_위치- 함수가 추출을 시작할 원본 텍스트의 위치입니다.
- 문자열_개수(선택사항) – A시작_위치 부터 원본 텍스트에서 추출할 문자 개수를 지정하는 수 입니다. 비어 있으면 MID 함수는 시작 위치부터 모든 문자를 반환합니다.
다음 코드는 문자열의 두 번째 위치 또는 문자부터 시작하여 4개의 문자를 추출하기 위해 문자열 중간 함수를 사용하는 방법을 보여줍니다:
Sub UsingTheMidStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "AutomateExcel"
valueTwo = Mid(valueOne, 2, 4)
MsgBox valueTwo
End Sub
결과는 메시지 박스에 출력됩니다:
Mid 함수는 문자열의 두 번째 위치에서 시작하여 AutomateExcel의 네 글자를 추출했는데, 이 글자는 utom입니다.
문자열 내 부분 문자열의 위치 찾기
VBA Instr 문자열 함수
VBA Instr 함수는 다른 문자열 내에서 부분 문자열의 시작 위치를 반환합니다. 이 함수는 대소문자를 구분합니다. VBA Instr 문자열 함수의 구문은 다음과 같습니다:
Instr(시작, 문자열, 부분_문자열, 비교) :
- 시작(선택사항) – 함수를 검색할 시작 위치를 지정합니다. 비워두면 기본값인 1이 사용됩니다.
- 문자열- 원본 텍스트입니다.
- 부분_문자열– 위치를 찾으려는 원본 텍스트 내의 문자입니다.
- 비교 (선택사항) – 수행할 비교 유형을 지정합니다. 비워두면 이진 비교가 사용됩니다.
-vbBinaryCompare – 이진 비교(대문자와 소문자는 다른 것으로 간주)
-vbTextCompare – 텍스트 비교(대문자와 소문자는 같은 것으로 간주)
-vbDatabaseCompare – 데이터베이스 비교 (이 옵션은 Microsoft Access에서만 사용되며 데이터베이스를 기반으로 한 비교입니다.)
다음 코드는 Instr 문자열 함수를 사용하여 기본 문자열 내에서 부분 문자열 “Th”가 처음으로 나온 위치를 확인하는 방법을 보여줍니다:
Sub UsingTheInstrStringFunction()
Dim valueOne As String
Dim positionofSubstring As Integer
valueOne = "This is The Text "
positionofSubstring = InStr(1, valueOne, "Th")
Debug.Print positionofSubstring
End Sub
결과는 (직접실행 창에 출력된) 다음과 같습니다:
Instr 함수는 부분 문자열 “Th”의 첫 번째 발생 위치인 1을 반환했습니다. 이 함수는 위치에 공백을 포함한다는 점에 유의하십시오.
VBA InstrRev 문자열 함수
VBA InstrRev 함수는 문자열의 끝부터 위치 계산을 시작하여 문자열 내에서 부분 문자열의 시작 위치를 반환합니다. 이 함수는 대소문자를 구분합니다. VBA InstrRev 문자열 함수의 구문은 다음과 같습니다:
InstrRev(문자열, 부분_문자열, 시작, 비교):
- 문자열 – 원본 텍스트입니다.
- 부분_문자열 – 위치를 찾으려는 원본 텍스트 내의 문자입니다.
- 시작(선택 사항) – 검색을 시작할 위치를 지정합니다. 비워두면 마지막 문자부터 검색을 시작합니다.
- 비교(선택 사항) – 수행할 비교 유형을 지정합니다. 비어 있으면 이진 비교가 사용됩니다.
-vbBinaryCompare – 이진 비교(대문자와 소문자는 다른 것으로 간주)
-vbTextCompare – 텍스트 비교(대문자와 소문자는 같은 것으로 간주)
-vbDatabaseCompare – 데이터베이스 비교 (이 옵션은 Microsoft Access에서만 사용되며 데이터베이스를 기반으로 한 비교입니다.)
다음 코드는 InstrRev 문자열 함수를 사용하여 문자열 끝에서 시작하여 기본 문자열 내에서 부분 문자열 “Th”가 처음으로 나온 위치를 찾는 방법을 보여줍니다:
Sub UsingTheInstrRevStringFunction()
Dim valueOne As String
Dim positionofSubstring As Integer
valueOne = "This is The Text "
positionofSubstring = InStrRev(valueOne, "Th")
Debug.Print positionofSubstring
End Sub
결과가 직접실행 창에 출력됩니다:
InstrRev 함수는 문자열 끝에서 부터 카운트를 시작하여 부분 문자열 “Th”의 첫 번째 발생 위치를 반환합니다(결과값 : 9). 이 함수는 카운트에 공백을 포함한다는 점에 유의하세요.
문자열에서 공백 제거하기
VBA LTrim 문자열 함수
VBA LTrim 함수는 텍스트 또는 문자열 시작부 앞부분에 있는 모든 공백을 제거합니다. VBA LTrim 문자열 함수의 구문은 다음과 같습니다:
LTrim(문자열) where:
- 문자열 – 원복 텍스트입니다.
다음 코드는 VBA LTrim 함수를 사용하여 지정된 문자열에서 문자열 시작부 앞부분에 있는 공백을 제거하는 방법을 보여줍니다:
Sub UsingTheLTrimStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = " 이 웹 사이트 주소는 https://www.automateexcel.com/excel/ 입니다"
valueTwo = LTrim(valueOne)
MsgBox valueOne
MsgBox valueTwo
End Sub
결과는 다음과 같습니다:
LTrim 함수는 두 번째 메시지 박스에 표시된 valueTwo의 문자열 시작부 앞부분에 있는 모든 공백을 제거했습니다.
VBA RTrim 문자열 함수
VBA RTrim 함수는 텍스트 또는 문자열에서 문자열 끝부분 뒤에 있는 모든 공백을 제거합니다. VBA RTrim 문자열 함수의 구문은 다음과 같습니다:
RTrim(문자열) where:
- 문자열 – 원본 텍스트입니다.
다음 코드는 VBA RTrim 함수를 사용하여 주어진 문자열에서 문자열 끝부분 뒤에 있는 모든 공백을 제거하는 방법을 보여줍니다:
Sub UsingTheRTrimStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "이 웹 사이트 주소는 https://www.automateexcel.com/excel/ 입니다 "
valueTwo = RTrim(valueOne)
MsgBox valueOne
MsgBox valueTwo
End Sub
결과는 다음과 같습니다:
RTrim 함수는 두 번째 메시지 상자에 표시된 valueTwo의 문자열 끝부분 뒤에 있는 모든 공백을 제거했습니다(위 캡처를 자세히 보시면 아래 메시지 박스는 공백이 제거되어 한줄로 구성된 것을 확인하실 수 있습니다) .
VBA 문자열 자르기 함수
VBA Trim 함수는 텍스트 또는 문자열에서 모든 선행 및 후행 공백을 제거합니다. VBA 문자열 자르기 함수의 구문은 다음과 같습니다:
Trim(문자열) where:
- 문자열- 원본 텍스트입니다.
다음 코드는 VBA 자르기 함수를 사용하여 지정된 문자열에서 선행 및 후행 공백을 제거하는 방법을 보여줍니다:
Sub UsingTheTrimStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = " 이 웹 사이트 주소는 https://www.automateexcel.com/excel/ 입니다 "
valueTwo = Trim(valueOne)
MsgBox valueOne
MsgBox valueTwo
End Sub
The results are:
트림 함수는 두 번째 메시지 상자에 표시된 valueTwo의 선행 및 후행 공백을 제거했습니다.
VBA Case 함수
The VBA LCase 문자열 함수
VBA LCase 함수는 텍스트 또는 문자열의 문자를 소문자로 변환합니다. VBA LCase 문자열 함수의 구문은 다음과 같습니다:
LCase(문자열):
- 문자열- 원본 텍스트입니다.
다음 코드는 LCase 문자열 함수를 사용하여 지정된 문자열의 모든 문자를 소문자로 변환하는 방법을 보여줍니다:
Sub UsingTheLCaseStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "THIS IS THE PRODUCT"
valueTwo = LCase(valueOne)
MsgBox valueTwo
End Sub
결과는 아래와 같습니다:
LCase 함수는 문자열의 모든 문자를 소문자로 변환했습니다.
The VBA UCase 문자열 함수
VBA UCase 함수는 텍스트 또는 문자열의 문자를 대문자로 변환합니다. VBA UCase 문자열 함수의 구문은 다음과 같습니다:
UCase(문자열):
- 문자열- 원본 텍스트입니다.
다음 코드는 UCase 문자열 함수를 사용하여 지정된 문자열의 모든 문자를 대문자로 변환하는 방법을 보여줍니다:
Sub UsingTheUCaseStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "this is the product"
valueTwo = UCase(valueOne)
MsgBox valueTwo
End Sub
결과는 다음과 같습니다:
UCase 함수가 문자열의 모든 문자를 대문자로 변환했습니다.
The VBA StrConv 함수
VBA StrConv 함수는 지정한 변환 유형에 따라 텍스트 또는 문자열의 문자를 대문자, 소문자, 고유 대소문자 또는 유니코드로 변환할 수 있습니다. VBA StrConv 문자열 함수의 구문은 다음과 같습니다:
StrConv(문자열, 변환, [LCID]) where:
- 문자열- 원본 텍스트입니다.
- 변환- 원하는 변환 유형입니다.
- [LCID] (선택 사항) – 로컬ID를 지정하는 선택적 매개변수입니다. 비어 있으면 시스템 로컬ID가 사용됩니다.
다음 코드는 StrConv 문자열 함수를 사용하여 문자열을 proper case*로 변환하는 방법을 보여줍니다: *proper case : 각 단어의 첫째 단어를 대문자, 나머지는 소문자로 변환합니다.
Sub UsingTheStrConvStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "this is THE product"
valueTwo = StrConv(valueOne, vbProperCase)
MsgBox valueTwo
End Sub
결과는 아래와 같습니다:
변환 매개변수를 사용하여 수행하려는 변환 유형을 지정합니다:
- vbLowerCase는 텍스트의 모든 문자를 소문자로 변환합니다.
- vbUpperCase는 텍스트의 모든 문자를 대문자로 변환합니다.
- vbProperCase는 텍스트에 있는 각 단어의 첫 글자를 대문자로 변환하고 다른 모든 글자는 소문자로 유지합니다.
- vbUnicode는 문자열을 유니코드로 변환합니다.
- vbFromUnicode는 문자열을 유니코드에서 시스템의 기본 코드 페이지로 변환합니다.
문자열 비교하기
The VBA StrComp 함수
VBA StrComp 문자열 함수를 사용하면 두 문자열을 비교할 수 있습니다. 함수는 아래 규칙에 의해 값을 반환합니다:
- 두 문자열이 일치하면 0을 반환
- 문자열1이 문자열2보다 작으면 -1을 반환
- 문자열1이 문자열2보다 크면 1을 반환
- 두 문자열 중 하나가 Null인 경우 Null 값을 반환 *문자열의 크고 작음은 문자열을 아스키코드로 변환 하여 연산함.
다음 코드는 StrComp 함수를 사용하여 두 문자열을 비교하는 방법을 보여줍니다:
Sub UsingTheStrCompStringFunction()
Dim valueOne As String
Dim valueTwo As String
Dim resultofComparison As Integer
valueOne = "AutomateExcel"
valueTwo = "AutomateExcel"
resultofComparison = StrComp(valueOne, valueTwo)
Debug.Print resultofComparison
End Sub
결과는 아래와 같습니다:
StrComp 함수가 두 문자열 간에 정확히 일치하는 것을 확인하여 0을 반환했습니다.
The VBA Like 연산자
VBA Like 연산자를 사용하면 텍스트 또는 문자열을 패턴과 비교하여 일치하는 항목이 있는지 확인할 수 있습니다. 일반적으로 와일드카드와 함께 Like 연산자를 사용합니다. 다음 코드는 유사 연산자를 사용하는 방법을 보여줍니다:
Sub UsingTheLikeOperatorInVBA()
Dim valueOne As String
valueOne = "출력 결과를 보겠습니다"
If valueOne Like "*결과*" Then
MsgBox "일치하는 항목이 있습니다, 이 문자열에는 결과라는 단어가 포함되어 있습니다"
Else
MsgBox "일치하는 항목이 없습니다"
End If
End Sub
결과는 아래와 같습니다:
패턴이 일치하는 항목을 찾기 위해 Like 연산자와 함께 사용할 수 있는 와일드카드는 다음과 같습니다:
- ? 단일 문자를 의미합니다.
- # 한 자리 숫자를 의미합니다.
- * 0개 이상의 문자를 의미합니다.
다음 코드는 Like 연산자와 ? 와일드카드를 사용하여 일치하는 패턴을 확인하는 방법입니다:
Sub UsingTheLikeOperatorWithAWildcardInVBA()
Dim valueOne As String
valueOne = "테스트"
If valueOne Like "??트" Then
MsgBox "일치하는 패턴이 확인되었습니다"
Else
MsgBox "일치하는 패턴이 없습니다"
End If
End Sub
결과는 아래와 같습니다:
기타 유용한 VBA 문자열 함수
VBA 문자열 바꾸기 함수
VBA Replace 함수는 문자열의 문자 집합을 다른 문자 집합으로 바꿉니다. VBA 문자열 바꾸기 함수의 구문은 다음과 같습니다:
Replace(문자열, 검색, 대체, 시작, 횟수, 비교) where:
- 문자열 – 원본 텍스트입니다.
- 검색 – 원본 텍스트 내에서 검색할 부분 문자열입니다.
- 대체 – 부분 문자열을 바꿀 대체 문자열입니다.
- 시작 (선택사항) – 원본 텍스트 내에서 검색을 시작할 위치입니다. 비워 두면 1 값이 사용되며 첫 번째 문자 위치부터 검색을 시작됩니다.
- 횟수 (선택사항) – 원본 텍스트에서 바꿀 부분 문자열의 발생 횟수입니다. 비어 있으면 부분 문자열의 모든 항목이 바뀝니다.
- 비교 (선택사항) – 수행할 비교 유형을 지정합니다. 비어 있으면 이진 비교가 사용됩니다.
-vbBinaryCompare – 이진 비교
-vbTextCompare – 텍스트 비교
-vbDatabaseCompare – 데이터베이스 비교 (이 옵션은 Microsoft Access에서만 사용되며 데이터베이스를 기반으로 비교합니다.)
다음 코드는 문자열 바꾸기 함수를 사용하는 방법을 보여줍니다:
Sub UsingTheReplaceStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "제품 가나다"
valueTwo = Replace(valueOne, "가나다", "라마바")
MsgBox valueTwo
End Sub
결과는 다음과 같습니다:
Replace 함수는 “제품 가나다” 내에서 부분 문자열 “가나다”를 찾아서 부분 문자열 “라마바”로 바꿨습니다.
VBA StrReverse 함수
VBA StrReverse 함수는 주어진 텍스트 또는 문자열의 문자를 반전시킵니다. VBA StrReverse 문자열 함수의 구문은 다음과 같습니다:
StrReverse(문자열) where:
- 문자열 – 원본 텍스트입니다.
다음 코드는 VBA StrReverse 함수를 사용하여 문자열 Product의 문자를 반전시키는 방법을 보여줍니다:
Sub UsingTheStrReverseStringFunction()
Dim valueOne As String
Dim valueTwo As String
valueOne = "제품입니다"
valueTwo = StrReverse(valueOne)
MsgBox valueTwo
End Sub
결과는 아래와 같습니다:
VBA Len 문자열 함수
VBA Len 함수는 텍스트 문자열의 문자 수를 반환합니다. VBA Len 문자열 함수의 구문은 다음과 같습니다:
Len(문자열) :
- 문자열 – 원본 텍스트입니다.
다음 코드는 Len 문자열 함수를 사용하여 AutomateExcel 문자열의 길이를 확인하는 방법을 보여 줍니다:
Sub UsingTheLenFunction()
Dim valueOne As String
Dim stringLength As Integer
valueOne = "엑셀 자동화"
stringLength = Len(valueOne)
Debug.Print stringLength
End Sub
결과는 아래와 같습니다:
Len 함수는 “엑셀 자동화” 텍스트의 모든 문자(6글자)를 계산했습니다.