标题几乎说明了一切,但我一直在寻找如何执行以下操作我在 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)
有任何想法吗?因为我已经通过论坛和谷歌进行了一些搜索,但找不到我需要的东西
正则表达式版本:
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 否决票可能是因为您没有表现出任何努力(代码)或遇到的问题。此外,当人们同时在多个网站上交叉发布问题时,人们也不会太友好。
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |