powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Перевернуть значение в ячейке
23 сообщений из 23, страница 1 из 1
Перевернуть значение в ячейке
    #36495364
Фотография ALARMus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в ячейке Excel изменить порядок имеющихся в ней символов заданных через /

Например:
Было - 12345/67890
Надо - 67890/12345
или
Было - abc/def/ghj
Надо - ghj/def/abc
...
Рейтинг: 0 / 0
Перевернуть значение в ячейке
    #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
Перевернуть значение в ячейке
    #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
Перевернуть значение в ячейке
    #36496120
Фотография ALARMus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество значений отделенных символом / различное. от 0 до 10 (может чуть меньше)
...
Рейтинг: 0 / 0
Перевернуть значение в ячейке
    #36496123
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALARMus,

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

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

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

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

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

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

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

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

Я разве не так сделал. Нажал ALT-F11 и вставил в открывшемся окне
...
Рейтинг: 0 / 0
Перевернуть значение в ячейке
    #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
Перевернуть значение в ячейке
    #36496457
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALARMus, при передаче аргументов функции, не забывайте о разделителе. По умолчанию я поставил пробел. Вы же должны передать Ваш разделитель - "/"
...
Рейтинг: 0 / 0
Перевернуть значение в ячейке
    #36497574
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Желательно в начале пользовательской функции сразу после описания переменных добавить код:
Код: plaintext
Application.Volatile True
...
Рейтинг: 0 / 0
Перевернуть значение в ячейке
    #36497651
Фотография ALARMus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо получилось.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Перевернуть значение в ячейке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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