Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Перевернуть значение в ячейке / 23 сообщений из 23, страница 1 из 1
01.03.2010, 17:08
    #36495364
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
Как в ячейке Excel изменить порядок имеющихся в ней символов заданных через /

Например:
Было - 12345/67890
Надо - 67890/12345
или
Было - abc/def/ghj
Надо - ghj/def/abc
...
Рейтинг: 0 / 0
01.03.2010, 19:07
    #36495619
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMus,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Function ExampleTextReverse(sText As String, _
    Optional sDelimeter As String = " ") As String
Dim aText() As String, i As Integer

aText = Split(sText, sDelimeter)
sText = Empty
For i = UBound(aText) To  0  Step - 1 
    sText = sText & sDelimeter & aText(i)
Next
ExampleTextReverse = Right(sText, Len(sText) -  1 )
End Function
Sub Test()
sStroka = ExampleTextReverse("abc/def/ghj", "/")
End Sub
...
Рейтинг: 0 / 0
02.03.2010, 00:56
    #36495949
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
Формулой тоже можно :)

Последняя часть - в начало:
ПСТР(A1;НАЙТИ("_";ПОДСТАВИТЬ(A1;"/";"_";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"/";""))))+1;10)
10 - чтобы не высчитывать количество знаков после последнего "/" (число не должно быть меньше предполагаемого количества)
Передняя часть - в конец:
ПСТР(A1;1;НАЙТИ("/";A1)-1)
Средина:
ПСТР(A1;НАЙТИ("/";A1);НАЙТИ("_";ПОДСТАВИТЬ(A1;"/";"_";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"/";""))))-НАЙТИ("/";A1)+1)

Все "в одном флаконе":
=ПСТР(A1;НАЙТИ("_";ПОДСТАВИТЬ(A1;"/";"_";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"/";""))))+1;10)&ПСТР(A1;НАЙТИ("/";A1);НАЙТИ("_";ПОДСТАВИТЬ(A1;"/";"_";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"/";""))))-НАЙТИ("/";A1)+1)&ПСТР(A1;1;НАЙТИ("/";A1)-1)
...
Рейтинг: 0 / 0
02.03.2010, 09:02
    #36496120
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
Количество значений отделенных символом / различное. от 0 до 10 (может чуть меньше)
...
Рейтинг: 0 / 0
02.03.2010, 09:04
    #36496123
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMus,

пример ExampleTextReverse сработает и в этом случае.
...
Рейтинг: 0 / 0
02.03.2010, 09:29
    #36496146
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
big-duke,

А как задействовать этот basic код к листу excel на котором много строк содержит такие данные которые требует преобразования ?
...
Рейтинг: 0 / 0
02.03.2010, 09:53
    #36496196
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMusКоличество значений отделенных символом / различное. от 0 до 10 (может чуть меньше)
Проверил на 14 шт. - формула работает, как я понял задачу - переставить местами тексты: до первого / и после последнего / :)
...
Рейтинг: 0 / 0
02.03.2010, 09:57
    #36496206
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMusbig-duke,

А как задействовать этот basic код к листу excel на котором много строк содержит такие данные которые требует преобразования ?
1. ALT-F11
2. Вставить модуль
3. В модуле разместить код функции
4. На листе в ячейке =ExampleTextReverse(А1)
5. Протянуть формулу
...
Рейтинг: 0 / 0
02.03.2010, 10:11
    #36496237
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
А как задействовать этот basic код к листу excel на котором много строк содержит такие данные которые требует преобразования ? ALARMus, добавлю, что после размещения в модуле, функцию Example... нужно выбирать среди прочих в разделе "Определённые пользователем". Или, чтобы сразу поменять значения в ячейках, вызывать её в цикле из процедуры VBA. Неплохо бы в любом случае добавить в код функции проверку входящего значения. Типа этого:
Код: plaintext
If Len(sText) <  3  Then ExampleTextReverse = "": Exit Function
(вставить после объявления переменных)
...
Рейтинг: 0 / 0
02.03.2010, 10:23
    #36496262
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
vlth функцию Example... нужно выбирать среди прочих в разделе "Определённые пользователем".
Зачем ?
Она и так видна.
...
Рейтинг: 0 / 0
02.03.2010, 10:25
    #36496271
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
viktturФормулой тоже можно :)
Я тоже сначала хотел с формулой потренироваться. Но потом стало жалко часов двух (в перспективе) потраченного времени )))
...
Рейтинг: 0 / 0
02.03.2010, 10:30
    #36496286
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
big-dukevlth функцию Example... нужно выбирать среди прочих в разделе "Определённые пользователем".
Зачем ?
Она и так видна.

Ну это кому как удобнее ) К тому же 2007-й не все используют.
...
Рейтинг: 0 / 0
02.03.2010, 10:30
    #36496287
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
vlth, если не тренироваться, то так и останется 2-3 часа на такую формулу ;)))
...
Рейтинг: 0 / 0
02.03.2010, 10:35
    #36496296
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
vlth
Ну это кому как удобнее ) К тому же 2007-й не все используют.
Это 2010.
...
Рейтинг: 0 / 0
02.03.2010, 10:41
    #36496314
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
big-duke,

2007 офис
У меня не появляется формула ExampleTextReverse в списке и нет такого как "Определённые пользователем" в списке формул :(
...
Рейтинг: 0 / 0
02.03.2010, 10:43
    #36496318
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMus,

вы объявили фукнцию как Public в модуле ?
...
Рейтинг: 0 / 0
02.03.2010, 10:57
    #36496355
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
big-duke,

Просто скопировал тот код, что мне написали (до End Function включительно) и вставил в VBA Project-MicrosoftExcelObject-Лист(out)
более ничего
...
Рейтинг: 0 / 0
02.03.2010, 11:04
    #36496379
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMus,

я же вам написал
автор2. Вставить модуль
3. В модуле разместить код функции
...
Рейтинг: 0 / 0
02.03.2010, 11:17
    #36496406
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
big-duke,

Я разве не так сделал. Нажал ALT-F11 и вставил в открывшемся окне
...
Рейтинг: 0 / 0
02.03.2010, 11:34
    #36496435
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMus,

Вставил объект все появилось, но не правильно отрабатывает функция. Частично от того что я не все вводные данные сказал, но в целом и без этого не верно.

Возможные варианты значений в ячейках (не конкретные а схемотично)

Слово1
Слово1 Слово2
Слово3/Слово4 Слово5
Слово7 Слово8/Слово5
Слово3/Слово6

Развернуть порядок надо только значений между /
Т.Е. результат должен быть таким:

Слово1
Слово1 Слово2
Слово4 Слово5/Слово3
Слово5/Слово7 Слово8
Слово6/Слово3
==============================
Ваш скрипт сделал вот так
Слово1
Слово2 Слово1 - т.е. тут поменял местами слова
Слово5 Слово3/Слово4 - что прижималось к слэшу осталось на месте
Слово8/Слово5 Слово7 - что прижималось к слэшу осталось на месте
Слово3/Слово6 - тут ничего не изменил
...
Рейтинг: 0 / 0
02.03.2010, 11:39
    #36496457
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
ALARMus, при передаче аргументов функции, не забывайте о разделителе. По умолчанию я поставил пробел. Вы же должны передать Ваш разделитель - "/"
...
Рейтинг: 0 / 0
02.03.2010, 15:58
    #36497574
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
Желательно в начале пользовательской функции сразу после описания переменных добавить код:
Код: plaintext
Application.Volatile True
...
Рейтинг: 0 / 0
02.03.2010, 16:19
    #36497651
ALARMus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть значение в ячейке
Всем спасибо получилось.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Перевернуть значение в ячейке / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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