вторник, 17 июля 2018 г.

Пользовательские функции Excel. Функция убирает из строки числа или текст.

Для извлечения только чисел

=Extract_Number_from_Text(str; 0)
или
=Extract_Number_from_Text(B1)
Для извлечения только текста
=Extract_Number_from_Text(str; 1)

Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
' --- Функция убирает из строки числа или текст
'sWord = ссылка на ячейку или непосредственно текст
'Метод = 0 – числа
'Метод = 1 – текст

    Dim sSymbol As String, sInsertWord As String
    Dim i As Integer

    If sWord = "" Then Extract_Number_from_Text = "Нет данных!": Exit Function
    sInsertWord = ""
    sSymbol = ""
    For i = 1 To Len(sWord)
        sSymbol = Mid(sWord, i, 1)
        If Metod = 1 Then
            If Not LCase(sSymbol) Like "*[0-9]*" Then
                If (sSymbol = "," Or sSymbol = "." Or sSymbol = " ") And i > 1 Then
                    If Mid(sWord, i - 1, 1) Like "*[0-9]*" And Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        Else
            If LCase(sSymbol) Like "*[0-9.,;:-]*" Then
                If LCase(sSymbol) Like "*[.,]*" And i > 1 Then
                    If Not Mid(sWord, i - 1, 1) Like "*[0-9]*" Or Not Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        End If
    Next i
    Extract_Number_from_Text = sInsertWord
End Function

Данная строка отвечает за текстовые символы, которые могут встречаться внутри чисел и которые надо оставить(не удалять наравне с другими не числовыми символами). Остальные  просто удалится. 

Оставить только числа
Если надо исключить из удаления помимо цифр точку

Комментариев нет:

Отправить комментарий