Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Перенос из ячейки(текст+цифры) только последних 10 цифр

Автор: Uznaika
Дата сообщения: 04.08.2016 13:07
Здравствуйте. Нужна помощь.
Есть файл ексел пример:
столбец B: пустой
столбец C: Вкл. компрессора (рем. 0,3 мм.) КамАЗ 130-3509092-63
Каким способом реализовать перенос из C в B последних 15 цифр с тире и точками?
Я нашел скрипт VBS но он переносит все символы из ячейки, пример работы скрипта 03130-3509092-63
[SPOILER]
Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
'sWord = ссылка на ячейку или непосредственно текст
'Metod = 0 – числа
'Metod = 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
[/SPOILER]
Может кто подсказать как реализовать это, может есть другие варианты?
Буду признателен за подсказки.
в VB я новичок
Автор: KDPoid
Дата сообщения: 04.08.2016 14:42
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
Автор: Uznaika
Дата сообщения: 04.08.2016 15:27

Цитата:
VBA же старается быть максимально интуитивным.
Вот ваша функция чего-то там в цикле елозит, выделяет только цифры и допустимые знаки, какие-то танцы с бубном.


Спасибо за ответ. буду пробовать.

Страницы: 1

Предыдущая тема: Чудовищный баг DCC


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.