VBA 문자열 조작 기능 및 Opera토르

⚡ 스마트 요약

VBA 문자열 조작 함수 및 Operators는 결합하고, 측정하고, 추출합니다.trac엑셀 매크로 내의 텍스트에 대한 설명입니다. 이 페이지에서는 문자열 연결 연산자, Left, Right, Mid, Len 및 InStr 함수, 분할 및 병합, 그리고 문자열 코드 오류를 가장 자주 일으키는 원인에 대해 설명합니다.

  • 🔤 문자열 데이터: 문자, 기호 및 숫자로 구성된 값입니다. 예를 들어 "Jul-2015"라는 텍스트가 있습니다.
  • 연쇄 Opera토르: 앰퍼샌드(&)는 두 문자열을 연결하므로 "John " & "Doe"는 John Doe를 반환합니다.
  • ✂️ Extrac기능: Left, Right, and Mid는 값의 시작, 끝 또는 중간에서 부분 문자열을 추출합니다.
  • 📏 측정 기능: Len은 문자 수를 세고 InStr은 부분 문자열이 시작되는 위치를 반환합니다.
  • 🧩 분할 및 병합: `split` 함수는 구분자로 묶인 하나의 문자열을 배열로 분할하고, `Join` 함수는 배열을 다시 하나의 문자열로 합칩니다.
  • ⚠️ 일반적인 오류 : 타입 불일치, InStr 함수가 0을 반환하는 경우, 그리고 후행 공백이 대부분의 비교 실패 원인입니다.

VBA 문자열 조작 함수 및 Opera토르

VBA 문자열 Opera토르

문자열 데이터는 숫자, 문자 및 기호로 구성된 데이터를 보관하는 데 사용됩니다. "Jul-2015"는 문자열 데이터의 예입니다. 다음으로 구성됩니다.

  • 캐릭터 (XNUMX월)
  • 기호(-)
  • Numbers (2015)

문자열 연산자는 문자열 데이터를 조작하는 데 사용됩니다. 예를 들어, "Jul-2015"처럼 월과 연도의 첫 3글자에서 July-2015 값을 연결할 수 있습니다.

다음 표는 VBA 문자열 연결 연산자를 보여줍니다.

S / N Opera바위 산 기술설명 예시 산출
1 & 연결: 이 연산자는 문자열을 연결하는 데 사용됩니다. "존 도우" 홍길동

예제 소스 Code

VBA 문자열 Operators 예시 소스 Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

위 코드를 실행하면 다음과 같은 결과가 생성됩니다.

VBA 문자열 Operators 예시 소스 Code

앰퍼샌드는 텍스트를 연결하는 데 사용되는 유일한 기호가 아니며, 숫자가 포함될 경우 두 기호의 차이가 중요해집니다.

문자열 연결에서 &와 +의 차이점

VBA는 두 텍스트 값 사이에 앰퍼샌드(&)와 더하기 기호(+)를 모두 허용하므로 초보자는 종종 이 둘을 같은 것으로 간주합니다. 하지만 피연산자 중 하나가 숫자이거나 빈 값인 경우에는 두 기호의 동작 방식이 달라지며, 둘 중 하나만 안전하게 사용할 수 있습니다.

행동 &(앰퍼샌드) + (플러스)
두 개의 텍스트 값 그들과 함께합니다: “Guru" & "99" 반환 Guru99 그들과 함께합니다: “Guru” + “99” 반환 Guru99
텍스트와 숫자 숫자를 텍스트로 변환합니다. "나이" & 30을 입력하면 "나이 30"이 반환됩니다. 타입 불일치 오류가 발생합니다
두 개의 숫자 문자열 “10”과 “5”를 입력하면 105가 반환됩니다. 10 + 5를 더하면 15가 됩니다.
널 값 Null을 빈 문자열로 처리합니다. Null을 반환하고 전체 결과를 버립니다.

💡 팁: 문자열 연결에는 항상 앰퍼샌드(&)를 사용하고, 더하기 기호(+)는 다음과 같은 용도로만 사용하세요. 산술 연산앰퍼샌드 앞뒤에 공백을 넣어주세요. VBA에서는 "Total&"를 Long 형식 선언 문자로 인식합니다.

VBA 문자열 조작 함수

VBA 문자열 조작은 중요한 요소입니다. 매크로 프로그래밍을 위한 Excel VBA 그리고 문자열 연산. Excel은 다음과 같은 다양한 유형의 VBA 문자열 조작 함수를 제공합니다.

  • 좌회전: 예에 사용됩니다trac문자열의 왼쪽에서 t개의 문자
  • 권리: 예에 사용됩니다trac문자열의 오른쪽에서 t개의 문자
  • 중간: 예에 사용됩니다trac문자열의 중간 부분 문자열을 추출합니다.
  • : 문자열의 길이를 찾는 데 사용됩니다.
  • InStr: 문자열에서 부분 문자열의 위치를 ​​찾는 데 사용됩니다.
  • 정돈콜론(:)은 문자열의 양쪽 끝에서 공백을 제거하는 데 사용됩니다.
  • 교체: 연산자는 한 부분 문자열의 모든 발생 위치를 다른 부분 문자열로 바꾸는 데 사용됩니다.
  • UCase / LCase: 문자열을 대문자 또는 소문자로 변환하는 데 사용됩니다.

아래 표는 각 함수의 구문과 예시를 보여주므로, 패턴을 그대로 복사하여 매크로에 붙여넣을 수 있습니다.

함수 통사론 예시 산출
좌회전 왼쪽(문자열, 길이) 왼쪽(“2015년 7월”, 3) 7월
권리 오른쪽(문자열, 길이) 오른쪽(“2015년 7월”, 4) 2015
중간 중간(문자열, 시작, 길이) 중간(“2015년 7월”, 5, 4) 2015
문자열 길이 렌(“2015년 7월”) 8
InStr InStr(시작, 문자열, 부분 문자열) InStr(1, “2015년 7월”, “-“) 4
정돈 문자열 다듬기 손질(" Guru99”) Guru99
교체 바꾸기(문자열, 찾기, 바꾸기) 바꾸기(“2015년 7월”, “-“, “/”) 2015월 XNUMX일
UCase UCase(문자열) UCase(“guru99”) 구루99

아래 매크로는 이러한 기능들을 여러 개 결합하여 날짜 레이블을 구성 요소들로부터 재구성합니다.

Sub StringFunctionsDemo()
    Dim Source As String
    Dim MonthPart As String
    Dim YearPart As String

    Source = "July-2015"

    ' Take the first three characters
    MonthPart = Left(Source, 3)
    ' Take the last four characters
    YearPart = Right(Source, 4)

    MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions"
End Sub

매크로를 실행하면 Jul-2015가 표시됩니다. 각 함수는 새로운 값을 반환하고 원래 문자열은 그대로 유지하므로 결과를 하나의 표현식으로 안전하게 결합할 수 있습니다.

이 함수들은 모두 한 번에 하나의 문자열만 처리합니다. 하나의 값이 전체 목록을 담고 있는 경우에는 다른 두 함수가 더 적합합니다.

VBA에서 문자열을 분할하고 결합하는 방법

Excel에 붙여넣은 데이터는 종종 "Pepsi,Coke,Fanta,Juice"처럼 각 항목 사이에 구분 기호가 있는 하나의 긴 값으로 나타납니다. 이러한 형태의 데이터를 Mid와 InStr 함수로 읽는 것은 속도가 느리고 불안정합니다. VBA는 바로 이러한 작업을 위한 완벽한 쌍의 함수를 제공합니다.

스플릿 구분자로 구분된 문자열을 입력받아 항목당 하나의 요소를 가진 0부터 시작하는 배열을 반환합니다. 가입하기 Join 함수는 반대로 배열을 입력받아 요소 사이에 구분 기호를 넣어 하나의 문자열로 반환합니다. Join 함수는 배열 자체에 대해 작동하며, 두 개의 개별 문자열에 대해서는 작동하지 않는다는 점에 유의하세요.

Sub SplitAndJoinDemo()
    Dim Source As String
    Dim Items() As String
    Dim i As Long

    Source = "Pepsi,Coke,Fanta,Juice"

    ' Break the value into an array on every comma
    Items = Split(Source, ",")

    For i = LBound(Items) To UBound(Items)
        Sheet1.Cells(i + 1, 1).Value = Items(i)
    Next i

    ' Rebuild the list with a different separator
    MsgBox Join(Items, " | "), vbOKOnly, "Joined List"
End Sub

이 반복문은 각 음료를 워크시트의 별도 행에 기록하고, 메시지 상자에는 펩시 | 코카콜라 | 환타 | 주스가 표시됩니다. 이 패턴이 실제 운영 환경에서 안정적으로 사용될 수 있도록 하는 세 가지 핵심 요소는 다음과 같습니다.

  • 0을 기준으로 한 결과: Split 함수는 Option Base 설정값과 관계없이 항상 0부터 시작하는 배열을 반환하므로, 고정된 숫자 대신 LBound와 UBound를 사용하여 루프를 제어하세요.
  • 문자열로 선언합니다. 결과를 동적 문자열 배열에 할당합니다. 먼저 고정 크기 배열을 선언하면 컴파일 오류가 발생합니다.
  • 빈 입력란: 빈 문자열을 분할하면 요소가 없는 배열이 반환되므로 Items(0)을 읽기 전에 UBound로 테스트합니다.

올바른 함수를 선택했더라도 문자열 코드는 몇 가지 예측 가능한 방식으로 오류를 발생시킵니다.

일반적인 VBA 문자열 오류 및 해결 방법

엑셀 VBA에서 발생하는 대부분의 문자열 관련 버그는 몇 가지 원인에서 비롯됩니다. 이러한 증상을 파악하면 디버깅 시간을 크게 줄일 수 있습니다.

  • 문자열 연결 시 타입 불일치: 텍스트와 숫자 사이에 더하기 기호(+)가 사용되었습니다. 이를 앰퍼샌드(&)로 바꾸면 숫자가 자동으로 변환됩니다.
  • InStr은 0을 반환합니다. 부분 문자열을 찾을 수 없습니다. InStr 함수는 실패 시 -1이 아닌 0을 반환하므로, 결과를 Mid 함수에 전달하기 전에 0보다 큰 값인지 확인해야 합니다.
  • 중간 또는 왼쪽에서 잘못된 프로시저 호출이 발생했습니다. 요청된 길이가 음수이거나 시작 위치가 1보다 작습니다. 길이가 문자열을 초과하지 않도록 Len 함수를 사용하여 호출을 보호하십시오.
  • 일치해야 하지만 일치하지 않는 비교: 가져온 데이터의 후행 공백은 등가 비교를 깨뜨립니다. 양쪽 모두 Trim으로 감싸고, 대소문자를 무시해야 할 때는 StrComp를 사용하세요.
  • 숫자로 변환되지 않는 텍스트: "1,200"과 같은 값은 구분자 때문에 산술 연산에서 오류가 발생합니다. CLng로 변환하기 전에 Replace 함수를 사용하여 구분자를 제거하십시오.

위 코드가 포함된 Excel을 다운로드하세요.

위의 엑셀 파일을 다운로드하세요. Code

자주 묻는 질문

가변 길이 문자열은 최대 약 20억 개의 문자를 저장할 수 있고, 고정 길이 문자열은 최대 65,400개의 문자를 저장할 수 있습니다. 하지만 워크시트 셀은 32,767개의 문자만 저장할 수 있으므로, 이보다 긴 값은 시트에 기록될 때 잘립니다.

등호는 기본적으로 대소문자를 구분하여 비교합니다. 대소문자를 구분하지 않는 결과를 얻으려면 StrComp(a, b, vbTextCompare)를 사용하거나, 모듈 맨 위에 Option Compare Text를 추가하여 모듈 전체의 기본값을 변경할 수 있습니다.

앰퍼샌드(&)는 모든 피연산자를 텍스트로 변환한 후 결합하므로, 10 & 5는 문자열 105를 반환합니다. 따라서 값을 숫자로 유지하고 먼저 더한 다음, 메시지 내에 결과를 포함해야 하는 경우 문자열을 연결하세요.

네. 입력과 원하는 출력을 설명해 주세요. 예를 들면 다음과 같습니다.trac첫 번째 하이픈 바로 앞의 코드를 입력하면 AI 어시스턴트가 Left 및 InStr 표현식을 반환합니다. 하이픈이 누락된 경우와 같은 예외 상황에 대해 테스트해 보세요.

네. InStr 함수가 포함된 Mid와 같은 중첩 표현식을 붙여넣으면 AI 도우미가 이를 단계별로 분해하고 각 인수의 이름을 지정하며 InStr 함수가 0을 반환하여 호출이 실패하는 경우를 표시합니다.

이 게시물을 요약하면 다음과 같습니다.