我正在尝试在Tableau中创建词云,但是我需要先准备Excel中的数据。我已经删除了所有不是字母数字的字符。但是,现在我想删除不,不是或不是这样的词。
老实说,我只想删除所有少于3个字符的单词。我使用VBA尝试了以下两段代码。
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
但是这创建了一个错误,提示Active X无法创建组件。
我尝试的第二件事是这样:
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
这只是什么都不做。我选择一个仅包含纯文本的单元格。我转到“运行宏”,然后选择它并单击“运行”。什么都没发生。
我在做什么错了?
谢谢!
答案 0 :(得分:0)
第二个宏在 A1 到 A10 范围内工作,而不是您拥有Selected
的单元格。
也替换:
If Len(stringArray(i)) > 3 Then
具有:
If Len(stringArray(i)) > 2 Then
保留3个字符的单词。