如何在Excel中找到单词并删除之前的数字?

How can I find word in Excel and delete the digit Before?

提问人:ppuynoon 提问时间:8/9/2023 最后编辑:Ikeppuynoon 更新时间:8/9/2023 访问量:48

问:

我想把这个词分开。如果我找到 ACC,则 ACC 之前的单词在 vba 代码中删除

enter image description here

我找到了这段代码,但它会在找到的文本之后删除该单词

Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="blue", _
    Forward:=True
If myRange.Find.Found = True Then 
myRange.SetRange (myRange.End + 1), ActiveDocument.Content.End
myRange.Delete

如果可能的话,可以使用公式函数吗?请建议

VBA -公式 Excel-2007

评论

0赞 Mayukh Bhattacharya 8/9/2023
您还可以使用公式使其更加动态,而不是对单词进行硬编码ACC --> =REPLACE(A1,1,MAX(IFERROR(FIND(CHAR(ROW($65:$90)),A1)-1,""))-1,)

答:

1赞 Ike 8/9/2023 #1

您可以使用以下公式(而不是 VBA):

=MID(A1,FIND("ACC",A1),LEN(A1))

顺便说一句:您发布的代码是针对 Word-VBA 的 - 不适用于 Excel-VBA

1赞 Notus_Panda 8/9/2023 #2

如果你想用一个公式来做,你可以使用

=IFERROR(RIGHT(A1,LEN(A1)-FIND("ACC",A1)+1),"")
(尽管 Mid 现在打字较少,因此使用得更多,只是为您提供:p选项)

如果您想使用 VBA:

Sub test()
    Dim ws As Worksheet, rng As Range, arr, lRow As Long
    Dim srchStr As String
    srchStr = "ACC"
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    lRow = ws.Range("D" & Rows.Count).End(xlUp).Row
    Set rng = ws.Range("D1:D" & lRow)
    arr = rng.Value
    Dim i As Long
    For i = 1 To UBound(arr, 1)
        If InStr(arr(i, 1), srchStr) Then
            arr(i, 1) = Mid(arr(i, 1), InStr(arr(i, 1), srchStr))
        Else
            arr(i, 1) = ""
        End If
    Next i
    rng.Offset(, 1).Value = arr
End Sub

那也应该这样做。