programing

Excel VBA - 문자열의 일부 제거

itmemos 2023. 6. 16. 21:27
반응형

Excel VBA - 문자열의 일부 제거

문자열의 일부를 삭제하려고 합니다.예를들면
mystring="site, site text, sales "

내 문자열에서 'site'를 제거하고 싶습니다.필요한 출력은 "사이트 텍스트, 세일즈"입니다.

나는 다음 코드 라인을 사용합니다.

s1 = Replace(mystring, "site", "")

하지만 나는 받고 있습니다."text, sales"

어떻게 해야 할지 잘 모르겠고 도와주시면 정말 감사하겠습니다!

replace("site, site text, sales ","site, ","",1,1)

또한 파라미터로 시작 위치와 교체할 횟수를 전송할 수 있습니다.(기본값은 -1)

여기에는 다양한 옵션이 있습니다.

대체할 검색 문자열에 코마를 추가하여 사용하기만 하면 됩니다.Trim공백을 제거하려면:

s1 = Trim(Replace(mystring, "site,", ""))

문자열을 바꿀 시간을 지정합니다(첫 번째 "1"은 시작, 두 번째는 교체 횟수).

s1 = Trim(Replace(mystring, "site,", "",1,1))

아니면 어려운/나쁜 방법으로, 첫번째 발생 후에 당신의 끈을 두 조각으로 분해하고 다시 결합하여 결과를 얻는 것입니다.

TempStart = Left(mystring, InStr(1, mystring, "site") + Len(mystring) + 1)
TempEnd = Replace(mystring, TempStart, "")
TempStart = Replace(TempStart, "site", "")
mystring = CStr(TempStart & TempEnd)

VB의 MID 기능을 다음과 같이 사용할 수도 있습니다.

Mystring=Mid(myString, 6) 

출력은 "사이트 텍스트, 판매"가 될 것입니다.

숫자 부분에서 제거할 문자 수를 지정하기만 하면 됩니다.

저의 경우, "[]와 "[] 사이에 있는 문자열 부분을 제거하고 싶었습니다.그리고 다음 코드는 잘 작동했습니다.

따라서 열 A의 원래 문자열(및 열 B의 솔루션):

Sub remove_in_string()

Dim i, lrowA, remChar As Long
Dim mString As String

lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lrowA

mString = Cells(i, 1).Value

    If InStr(mString, "[") > 0 Then

        remChar = InStr(mString, "]") - InStr(mString, "[") + 1

        Cells(i, 2).Value = Left(mString, Len(mString) - remChar)

    ElseIf InStr(mString, "[") = 0 Then

        Cells(i, 2).Value = Cells(i, 1).Value

    End If

Next

End Sub

언급URL : https://stackoverflow.com/questions/30024421/excel-vba-remove-part-of-the-string

반응형