Методы Excel VBA для удаления небуквенно-цифровых символов из строки, сохранения периода и пробела

Чтобы удалить все небуквенно-цифровые символы из строки в Excel VBA, за исключением точки и пробела, вы можете использовать различные методы. Вот несколько подходов:

Метод 1: использование регулярных выражений
Вы можете использовать возможности регулярных выражений для удаления небуквенно-цифровых символов. Сначала вам нужно добавить ссылку на библиотеку регулярных выражений Microsoft VBScript. Для этого выполните следующие действия:

  1. Нажмите Alt+F11, чтобы открыть редактор Visual Basic.
  2. Перейдите в Инструменты ->Справочники.
  3. Прокрутите вниз и отметьте «Регулярные выражения Microsoft VBScript x.x» (самая последняя доступная версия).

После добавления ссылки вы можете использовать следующий код:

Function RemoveNonAlphanumeric(ByVal inputString As String) As String
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")

    With regex
        .Pattern = "[^A-Za-z0-9. ]"
        .Global = True
        RemoveNonAlphanumeric = .Replace(inputString, "")
    End With
End Function

Пример использования: CleanString = RemoveNonAlphanumeric("Hello, $@World!")
Вывод: Hello World

Метод 2: использование цикла и сравнения
Другой метод включает в себя перебор каждого символа в строке и удаление небуквенно-цифровых символов с использованием сравнения кода ASCII. Вот пример:

Function RemoveNonAlphanumeric(ByVal inputString As String) As String
    Dim cleanString As String
    Dim i As Integer
    Dim charCode As Integer

    cleanString = ""

    For i = 1 To Len(inputString)
        charCode = Asc(Mid(inputString, i, 1))

        If (charCode >= 48 And charCode <= 57) Or _
           (charCode >= 65 And charCode <= 90) Or _
           (charCode >= 97 And charCode <= 122) Or _
           charCode = 32 Or charCode = 46 Then
            cleanString = cleanString & Mid(inputString, i, 1)
        End If
    Next i

    RemoveNonAlphanumeric = cleanString
End Function

Пример использования: CleanString = RemoveNonAlphanumeric("Hello, $@World!")
Вывод: Hello World