Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Подскажите формулу (если есть) / 7 сообщений из 7, страница 1 из 1
18.02.2011, 12:12
    #37124185
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
Есть ли в Excel 2003 - 2010 формула позволяющая реализовать следующее:

есть в ячейке текстовая инфа, например, [Иван Иванович Иванов], т.е. n-ое кол-во подстрок в строке с разделителями, мне нужно получить в другой ячейке [Иванов Иванович Иван], т.е. поменять порядок подстрок строго на обратный. Есть в Excel'e формула или какой-нибудь макрос, который позволит мне сделать такое?

Спасибо
--------------------------------------------------------------
o(O_O)o
...
Рейтинг: 0 / 0
18.02.2011, 13:20
    #37124407
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
Объединить три функции ПСТР(). Если все таки ваш пример упрощенный, нужен файл с данными.
...
Рейтинг: 0 / 0
18.02.2011, 13:38
    #37124473
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
viktturОбъединить три функции ПСТР(). Если все таки ваш пример упрощенный, нужен файл с данными.
да, я упростил, на самом деле там будет больше итерации, порядка 9-10, а пример можно взять любой, суть вопроса останется прежней. Каким образом передавать во вторую и последующие ф-ции ПСТР номер позиции, с которой продолжать поиск и вычленение подстрок?
...
Рейтинг: 0 / 0
18.02.2011, 13:44
    #37124497
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
Cerebrum,

Через функцию пользователя можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Function Move_SubString(Ячейка As Range, Номер_подстроки As Long, Новое_место As Long, Optional Разделитель As String = " ")
    Dim sStr, li As Long
    Dim sNewWord As String, sTmpStr As String
    sStr = Split(Ячейка, Разделитель)
    For li = LBound(sStr) To UBound(sStr)
        If li = Номер_подстроки -  1  Then sTmpStr = sStr(li): sStr(li) = ""
    Next li

    For li = LBound(sStr) To UBound(sStr)
        If li = Новое_место -  1  Then
            sNewWord = sNewWord & Разделитель & sTmpStr & Разделитель & sStr(li)
        Else
            sNewWord = sNewWord & Разделитель & sStr(li)
        End If
    Next li
    Move_SubString = Application.Trim(sNewWord)
End Function

Номер_подстроки - это номер слова в строке, которое перемещаем.
Новое_место - куда в строке перемещаем.
...
Рейтинг: 0 / 0
18.02.2011, 13:48
    #37124508
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
The_Prist ,

Большое спасибо, пойду попробую
...
Рейтинг: 0 / 0
18.02.2011, 14:58
    #37124754
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
CerebrumviktturОбъединить три функции ПСТР(). Если все таки ваш пример упрощенный, нужен файл с данными. Каким образом передавать во вторую и последующие ф-ции ПСТР номер позиции, с которой продолжать поиск и вычленение подстрок?
=ПОДСТАВИТЬ(A1;" ";"@";№)
Поиск "@". "№" - позиция пробела, которій меняется на "@"
...
Рейтинг: 0 / 0
18.02.2011, 15:08
    #37124794
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите формулу (если есть)
Cerebrum,
ещё вариант с пользовательской функцией
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' возвращает строку в которй "слова" записаны в обратном порядке
' параметры: mCell - ячейка со строкой для разбора, mSep - разделитель "слов" в строке
Function ReverseEx$(mCell As Range, Optional mSep$ = " ")
Dim s$, i%, iUB%, arr
arr = Split(mCell, mSep)
iUB = UBound(arr)
If iUB >  0  Then
  For i =  0  To (iUB -  1 ) \  2 
    s = arr(i): arr(i) = arr(iUB - i): arr(iUB - i) = s
  Next i
End If
ReverseEx = Join(arr, mSep)
End Function
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Подскажите формулу (если есть) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]