我正在尝试将字符串内容删除到字符串中包含的某个单词。例如
"Emily has wild flowers. They are red and blue."
我想使用VBA来替换
"They are red and blue."
即。删除所有内容直到单词“他们”。我不知道字符串内容和其中包含的字符数。
我不知道该怎么做,我真的很感谢你的帮助!
答案 0 :(得分:15)
你走了:
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)
答案 1 :(得分:3)
删除字符串中值之前的所有文本的简单示例。
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
答案 2 :(得分:1)
这对我很有用:
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
答案 3 :(得分:0)
如果单词是固定的,就像上面例子中的“他们”一样,你可以简单地做
。星号*是一个通配符,可以被称为 - 之前或之后(如果在末尾添加)该词的任何内容。
谨慎:当你在同一个单元格中有重复的单词时要小心。