Тема: Изменить порядок чередования только цифр в тексте

С помощью VB/VBA нужно решить такую проблему:
в тексте "ABC123D E456FG..." изменить порядок чередования только цифр, т.е. получить текст вида "ABC321D E654FG..."

Re: Изменить порядок чередования только цифр в тексте

Чего не сделаешь для девушек:)

Выделяется подстрока ABC123D
Выделяются первая часть подстроки ABC, цфровая часть и третья часть D.
Цифры последовательно заносятся в массив и далее из массива формируется строка с цифрами задом-наперед. То есть, массив считывается последовательно не с первого элемента а с последнего.
Объединяются первая часть, новая цифровая часть и третья.

Остальное должно быть понятно.

Re: Изменить порядок чередования только цифр в тексте

Для проверки того, может ли знак (знаки) быть интерпретирован как число, применяется встроенная функция -
IsNumeric.
Var1=321
Var2=A321
IsNumeric(Var1)=True
IsNumeric(Var2)=False

Re: Изменить порядок чередования только цифр в тексте

Можно так. Комментариев не даю. Все очень прозрачно.

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

Re: Изменить порядок чередования только цифр в тексте

Прощения просим.

Public Function invertNumeric(ByVal inText As String) As String

Далее по тексту.

Re: Изменить порядок чередования только цифр в тексте

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

Re: Изменить порядок чередования только цифр в тексте

Пардон. Нечаянно ушло.
В ощем, здесь можно использовать функцию обаботки строк StrRevers.

Re: Изменить порядок чередования только цифр в тексте

здесь можно использовать функцию обаботки строк StrRevers

Век живи - век учись.

Re: Изменить порядок чередования только цифр в тексте

> bender
Спасибо.
И всем кто откликнулся.

Re: Изменить порядок чередования только цифр в тексте

> bender
Разбираюсь с Вашими примерами. Небольшая незадача, если цифры находится в конце текста, то прога их не видит, т.е. :
из текста ABC123DE456 получается текст ABC123DE. Цифры 456 исчезают из текста. Пробую разобраться самостоятельно.

Re: Изменить порядок чередования только цифр в тексте

> Melena
Если не разберетесь, то напишите. Там все просто.

Re: Изменить порядок чередования только цифр в тексте

> bender
Согласна что, наверное, просто (все гениальное просто), но прошу помощи с исчезающими числами в конце текста. Ваши премеры мне очень помогают.
С огромным уважением к знающим

Re: Изменить порядок чередования только цифр в тексте

> bender
СПА-СИ-БО !!!
Все получилось