programing

Excel VBA - *word*까지 문자열 내용 삭제

stoneblock 2023. 6. 13. 21:56

Excel VBA - *word*까지 문자열 내용 삭제

문자열에 포함된 특정 단어까지 문자열 내용을 삭제하려고 합니다.예를들면

"Emily has wild flowers. They are red and blue."

저는 그것을 대체하기 위해 VBA를 사용하고 싶습니다.

"They are red and blue."

즉, "그들"이라는 단어까지 모든 내용을 제거합니다.문자열 내용과 포함된 문자 수를 알 수 없습니다.

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

여기 있습니다.

Dim s As String
s = "Emily has wild flowers. They are red and blue."

Dim indexOfThey As Integer

indexOfThey = InStr(1, s, "They")


Dim finalString As String
finalString = Right(s, Len(s) - indexOfThey + 1)

문자열의 값 앞에 있는 모든 텍스트를 삭제하는 간단한 예입니다.

Sub Foo()
    Dim strOrig As String
    Dim strReplace As String
    strOrig = "The Quick brown fox jumped over the lazy dogs"
    strReplace = "jumped"

    MsgBox (DropTextBefore(strOrig, strReplace))

End Sub

Public Function DropTextBefore(strOrigin As String, strFind As String)
    Dim strOut As String
    Dim intFindPosition As Integer
    'case insensitive search
    'could made it so that case sensitivity is a parameter but this gets the idea across.
    If strOrigin <> "" And strFind <> "" Then
        intFindPosition = InStr(UCase(strOrigin), UCase(strFind))
        strOut = Right(strOrigin, Len(strOrigin) - (intFindPosition + Len(strFind) - 1))
    Else
      strOut = "Error Empty Parameter in function call was encountered."
    End If
    DropTextBefore = strOut
End Function

위의 예에서 "그들"과 같이 단어가 고정되어 있다면, 당신은 간단하게 할 수 있습니다.

  1. CTRL + H(바꾸기)
  2. *그들(별과의 약속)

검색합니다.별표(*)는 단어 앞이나 뒤(마지막에 추가된 경우)의 -로 호출할 수 있는 와일드카드 문자입니다.

주의:같은 셀에 중복된 단어가 있을 경우 주의하십시오.

이것은 저에게 매우 효과적이었습니다.

Sub remove_until()

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

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

For i = 1 To lrowA

mString = Cells(i, 1).Value


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

    remChar = Len(mString) - InStr(mString, "They") + 1

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

    End If


Next

End Sub

언급URL : https://stackoverflow.com/questions/18402931/excel-vba-delete-string-content-up-to-word