Тема: Изменить порядок чередования только цифр в тексте
С помощью VB/VBA нужно решить такую проблему:
в тексте "ABC123D E456FG..." изменить порядок чередования только цифр, т.е. получить текст вида "ABC321D E654FG..."
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Изменить порядок чередования только цифр в тексте
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
С помощью VB/VBA нужно решить такую проблему:
в тексте "ABC123D E456FG..." изменить порядок чередования только цифр, т.е. получить текст вида "ABC321D E654FG..."
Чего не сделаешь для девушек:)
Выделяется подстрока ABC123D Выделяются первая часть подстроки ABC, цфровая часть и третья часть D. Цифры последовательно заносятся в массив и далее из массива формируется строка с цифрами задом-наперед. То есть, массив считывается последовательно не с первого элемента а с последнего. Объединяются первая часть, новая цифровая часть и третья.
Остальное должно быть понятно.
Для проверки того, может ли знак (знаки) быть интерпретирован как число, применяется встроенная функция -
IsNumeric.
Var1=321
Var2=A321
IsNumeric(Var1)=True
IsNumeric(Var2)=False
Можно так. Комментариев не даю. Все очень прозрачно.
Public Function invertNumericInText(ByVal inText As String) As String Dim tempText As String, i As Long tempText = "" For i = 1 To Len(inText) If IsNumeric(Mid(inText, i, 1)) = True Then tempText = tempText & Mid(inText, i, 1) Else If Len(invertNumeric) + Len(tempText) > 0 Then invertNumeric = invertNumeric & reverseStr(tempText) & Mid(inText, Len(invertNumeric) + Len(tempText) + 1, 1) Else invertNumeric = Left(inText, 1) End If tempText = "" End If Next End Function Public Function reverseStr(ByVal tempText As String) As String Dim temp As String, i As Long temp = "" For i = 1 To Len(tempText) temp = Mid(tempText, i, 1) & temp Next reverseStr = temp End Function
Прощения просим.
Public Function invertNumeric(ByVal inText As String) As String
Далее по тексту.
i=1
j=0
symb=Mid(TEXT,i,1)
Do Until i>len(TEXT)
symb=Mid(TEXT,i,1)
j=i
do whlle IsNumric(symb)
symbNum=symbNum & symb
symb=Mid(TEXT,i,1)
Loop
i=i+1
Loop
Пардон. Нечаянно ушло.
В ощем, здесь можно использовать функцию обаботки строк StrRevers.
здесь можно использовать функцию обаботки строк StrRevers
Век живи - век учись.
> bender
Спасибо.
И всем кто откликнулся.
> bender
Разбираюсь с Вашими примерами. Небольшая незадача, если цифры находится в конце текста, то прога их не видит, т.е. :
из текста ABC123DE456 получается текст ABC123DE. Цифры 456 исчезают из текста. Пробую разобраться самостоятельно.
> Melena
Если не разберетесь, то напишите. Там все просто.
> bender
Согласна что, наверное, просто (все гениальное просто), но прошу помощи с исчезающими числами в конце текста. Ваши премеры мне очень помогают.
С огромным уважением к знающим
> bender
СПА-СИ-БО !!!
Все получилось
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Изменить порядок чередования только цифр в тексте
Форум работает на PunBB, при поддержке Informer Technologies, Inc