提问人:ppuynoon 提问时间:8/9/2023 最后编辑:Ikeppuynoon 更新时间:8/9/2023 访问量:48
如何在Excel中找到单词并删除之前的数字?
How can I find word in Excel and delete the digit Before?
问:
我想把这个词分开。如果我找到 ACC,则 ACC 之前的单词在 vba 代码中删除
我找到了这段代码,但它会在找到的文本之后删除该单词
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
如果可能的话,可以使用公式函数吗?请建议
答:
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
那也应该这样做。
上一个:将文本框位置锁定为更新时相同
下一个:将多项选择响应转换为单热编码
评论
ACC
-->=REPLACE(A1,1,MAX(IFERROR(FIND(CHAR(ROW($65:$90)),A1)-1,""))-1,)