Как удалить слова с длиной менее 3 символов из ячейки? - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь создать облако слов в Таблице, но мне нужно сначала подготовить данные в 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

Это просто ничего не делает.Я выбираю ячейку только с простым текстом.Я иду к «Run Macro», выбираю его и нажимаю «Run».Ничего не происходит.

Что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 21 сентября 2019

Второй макрос работает в диапазоне от A1 до A10 , а не у вашей ячейки Selected.

Также замените:

    If Len(stringArray(i)) > 3 Then

с:

    If Len(stringArray(i)) > 2 Then

Для сохранения слов с 3 символами.

...