Excel VBA - удаление содержимого строки до * слова *

Я пытаюсь удалить содержимое строки до определенного слова, содержащегося в строке. Например

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

Я бы хотел использовать VBA, чтобы заменить это на

"They are red and blue."

т.е. удалить весь контент до слова "Они". Я не знаю содержание строки и количество содержащихся в ней символов.

Я не уверен, как это сделать, и я бы очень признателен за вашу помощь!

Ответ 1

Ну вот:

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)

Ответ 2

Простой пример удаления всего текста перед значением в строке.

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

Ответ 3

Это отлично подействовало на меня:

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

Ответ 4

Если слово фиксировано, например "Они" в приведенном выше примере, вы можете просто сделать

  1. CTRL + H (Заменить)
  2. * Они (ваше слово со звездой)

в поле "Поиск". Звездочка * является подстановочным символом, который можно назвать как-либо до или после (если добавлено в конце) слово.

Осторожно: будьте осторожны, когда у вас есть повторяющиеся слова в одной ячейке.