Excel VBA从字符串中删除少于3个字符的单词?

dia*_*ian 0 excel vba

标题几乎说明了一切,但我一直在寻找如何执行以下操作我在 A 列中有一个大约 100,000 个字符串的列表

"Hello My Name is"
"Delta Tango Foxtrot At"
"bing bong so"
Run Code Online (Sandbox Code Playgroud)

我只需要返回相同的字符串,但不包含长度小于 3 个字符的单词

所以我会留下:

"Hello Name"
"Delta Tango Foxtrot"
"bing bong"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?因为我已经通过论坛和谷歌进行了一些搜索,但找不到我需要的东西

Por*_*ner 5

正则表达式版本:

Sub removeSmallWords()
    ScreenUpdating = False

    Dim rng As Range
    Set rng = Range("A1:A10")

    Dim oReg As Object
    Set oReg = CreateObject("vbscript.regexp")

    For Each cell In rng
        With oReg
            .Pattern = "(\s|^)(\w{1,2})(\s|$)"
            .Global = True
            cell.Value = .Replace(cell.Value, " ")
        End With
        cell.Value = Trim(cell.Value)
    Next cell

    Set oReg = Nothing
    ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)

暴力循环的方法。对于大量数据来说,速度会很慢,但可以完成工作。

Sub removeSmallWords()
    ScreenUpdating = False

    Dim rng As Range
    Set rng = Range("A1:A10")

    Dim stringArray() As String
    Dim newString As String

    For Each cell In rng
        newString = ""
        stringArray = Split(cell.Text)

        For i = 0 To UBound(stringArray)
            If Len(stringArray(i)) > 3 Then
                newString = newString & " " & stringArray(i)
            End If
        Next i

        cell.Value = Trim(newString)
    Next cell

    ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)

PS 否决票可能是因为您没有表现出任何努力(代码)或遇到的问题。此外,当人们同时在多个网站上交叉发布问题时,人们也不会太友好。