KDPoid
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору VBA же старается быть максимально интуитивным. Вот ваша функция чего-то там в цикле елозит, выделяет только цифры и допустимые знаки, какие-то танцы с бубном. Последнее что она делает: Extract_Number_from_Text = sInsertWord Возвращает из Extract_Number_from_Text результат, который к этому моменту лежит в sInsertWord . Теперь вам нужно не весь результат, а только сколько-нибудь символов справа. Так и напишем... Код: Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer, Optional RCount As Integer) 'sWord = ссылка на ячейку или непосредственно текст 'Metod = 0 – числа 'Metod = 1 – текст 'RCount = количество символов справа 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 = Right(sInsertWord, RCount) End Function | Сколько последних символов надо взять, я сделал параметром, и изменил последнюю строчку. В вашем примере, чтобы такой функцией заполнять B из С нужно написать макрос использования этой функции. Что-нибудь типа: Код: Sub qweqwe() Range("B1").Value = Extract_Number_from_Text(Range("C1").Value, 0, 14) End Sub |
|