Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обмен местами значений в строке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Обмен местами значений в строке (Формулы/Formulas)
Обмен местами значений в строке
Жирик Дата: Воскресенье, 16.05.2021, 11:50 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Нужно поменять местами значения в строке. Есть данные "175/65R15 88TXLAllSeasonContact", нужно чтобы выглядело вот так "AllSeasonContact 175/65R15 88T XL". Существуют ли макросы, формулы или горячие клавиши для этого?
 
Ответить
СообщениеНужно поменять местами значения в строке. Есть данные "175/65R15 88TXLAllSeasonContact", нужно чтобы выглядело вот так "AllSeasonContact 175/65R15 88T XL". Существуют ли макросы, формулы или горячие клавиши для этого?

Автор - Жирик
Дата добавления - 16.05.2021 в 11:50
ZetMenChavo Дата: Воскресенье, 16.05.2021, 13:59 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Жирик, Здравствуйте, способ есть, но с множеством данных будет работать при хотя бы одном из условий,
Первое: если та часть текста которую нужно перенести вперёд всегда начинается с "All"
Код
=ПСТР(A2;ПОИСК("All";A2);250)&" "&ЛЕВСИМВ(A2;ПОИСК("All";A2)-1)

Или второе: что первая часть текста которую нужно перенести назад "175/65R15 88TXL", всегда имеет одинаковое количество символов до второй
Код
=ПСТР(A2;16;250)&" "&ЛЕВСИМВ(A2;15)

Файл прилагается
К сообщению приложен файл: 2952062.xlsx (9.8 Kb)


Сообщение отредактировал ZetMenChavo - Воскресенье, 16.05.2021, 14:01
 
Ответить
СообщениеЖирик, Здравствуйте, способ есть, но с множеством данных будет работать при хотя бы одном из условий,
Первое: если та часть текста которую нужно перенести вперёд всегда начинается с "All"
Код
=ПСТР(A2;ПОИСК("All";A2);250)&" "&ЛЕВСИМВ(A2;ПОИСК("All";A2)-1)

Или второе: что первая часть текста которую нужно перенести назад "175/65R15 88TXL", всегда имеет одинаковое количество символов до второй
Код
=ПСТР(A2;16;250)&" "&ЛЕВСИМВ(A2;15)

Файл прилагается

Автор - ZetMenChavo
Дата добавления - 16.05.2021 в 13:59
ZetMenChavo Дата: Воскресенье, 16.05.2021, 14:22 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
(Дополнение к предыдущему сообщению)
Аналог второго варианта, но тут уже правая часть текст, переносимая вперёд, должна иметь одинаковое количество знаков
Код
=ПСТР(A2;1+ДЛСТР(A2)-ДЛСТР("AllSeasonContact");250)&" "&ЛЕВСИМВ(A2;ДЛСТР(A2)-ДЛСТР("AllSeasonContact"))
 
Ответить
Сообщение(Дополнение к предыдущему сообщению)
Аналог второго варианта, но тут уже правая часть текст, переносимая вперёд, должна иметь одинаковое количество знаков
Код
=ПСТР(A2;1+ДЛСТР(A2)-ДЛСТР("AllSeasonContact");250)&" "&ЛЕВСИМВ(A2;ДЛСТР(A2)-ДЛСТР("AllSeasonContact"))

Автор - ZetMenChavo
Дата добавления - 16.05.2021 в 14:22
Жирик Дата: Воскресенье, 16.05.2021, 16:42 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

ZetMenChavo, спасибо за ответ,но в том то и дело, что кол-во знаков всегда разное и не всегда начинается с "ALL", например, есть такое "205/55R16 91V ContiPremiumContact SSR * #"
 
Ответить
СообщениеZetMenChavo, спасибо за ответ,но в том то и дело, что кол-во знаков всегда разное и не всегда начинается с "ALL", например, есть такое "205/55R16 91V ContiPremiumContact SSR * #"

Автор - Жирик
Дата добавления - 16.05.2021 в 16:42
jakim Дата: Воскресенье, 16.05.2021, 17:12 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1197
Репутация: 313 ±
Замечаний: 0% ±

Excel 2010
Приложите пример.


Сообщение отредактировал jakim - Воскресенье, 16.05.2021, 17:12
 
Ответить
Сообщение
Приложите пример.

Автор - jakim
Дата добавления - 16.05.2021 в 17:12
ZetMenChavo Дата: Воскресенье, 16.05.2021, 17:14 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Жирик, Ну никаких горячих клавиш для такой операции нет, да и что в формулах, что в макросе, всё равно нужно указать какую то закономерность в исходных данных, на основе которой будут работать функции.

Я заметил что в вашем втором примере "205/55R16 91V ContiPremiumContact SSR * #" так же как и в первом, та часть которую нужно поставить вперёд, начинается со слова, а не с простого набора букв ("All" в первом и "Conti" во втором), т.е. если количество вариантов слов на этом месте ограничено, часть данных имеет "All", часть "Conti" и т.д., то, слегка передав, можно использовать самую верхнюю формулу что я дал.

для этого надо заменить часть ПОИСК("All";A2) на
Код
=ЕСЛИОШИБКА(ПОИСК("All";A2);ПОИСК("Conti";A2))

Для трех разных значений
Код
=ЕСЛИОШИБКА(ПОИСК("All";A2);ЕСЛИОШИБКА(ПОИСК("Conti";A2);ПОИСК("ТЕКСТ";A2)))

и т.д.

Если же все таки все ваши данные уникальные, и закономерностей нет, то другого выбора нет как делать всё вручную.
 
Ответить
СообщениеЖирик, Ну никаких горячих клавиш для такой операции нет, да и что в формулах, что в макросе, всё равно нужно указать какую то закономерность в исходных данных, на основе которой будут работать функции.

Я заметил что в вашем втором примере "205/55R16 91V ContiPremiumContact SSR * #" так же как и в первом, та часть которую нужно поставить вперёд, начинается со слова, а не с простого набора букв ("All" в первом и "Conti" во втором), т.е. если количество вариантов слов на этом месте ограничено, часть данных имеет "All", часть "Conti" и т.д., то, слегка передав, можно использовать самую верхнюю формулу что я дал.

для этого надо заменить часть ПОИСК("All";A2) на
Код
=ЕСЛИОШИБКА(ПОИСК("All";A2);ПОИСК("Conti";A2))

Для трех разных значений
Код
=ЕСЛИОШИБКА(ПОИСК("All";A2);ЕСЛИОШИБКА(ПОИСК("Conti";A2);ПОИСК("ТЕКСТ";A2)))

и т.д.

Если же все таки все ваши данные уникальные, и закономерностей нет, то другого выбора нет как делать всё вручную.

Автор - ZetMenChavo
Дата добавления - 16.05.2021 в 17:14
Жирик Дата: Воскресенье, 16.05.2021, 17:29 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

ZetMenChavo, ZetMenChavo, ZetMenChavo, вот и приходится делать все в ручную через разбитие текста и потом соединять в правильном порядке...
К сообщению приложен файл: 0387388.xlsx (168.7 Kb)
 
Ответить
СообщениеZetMenChavo, ZetMenChavo, ZetMenChavo, вот и приходится делать все в ручную через разбитие текста и потом соединять в правильном порядке...

Автор - Жирик
Дата добавления - 16.05.2021 в 17:29
ZetMenChavo Дата: Воскресенье, 16.05.2021, 19:11 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Жирик, Сделал следующее. в столбце С использовал формулу
Код
=ЕСЛИОШИБКА(ПСТР(A2;ПОИСК("EcoContact";A2);250)&" "&ЛЕВСИМВ(A2;ПОИСК("EcoContact";A2)-1);"█")

в столбце В
Код
=ЕСЛИ(C2="█";;C2)

Столбец D пронумеровал, это пригодиться для сортировки. Выделил область со всеми данными и формулами, зашёл во вкладку "Данные" и нажал Фильтр.

Затем я делал следующее: из ячейки в столбце А выделил ту часть текста которая должна быть началом "EcoContact", затем нажал на черный прямоугольник в столбце С чтобы выделился весь столбец, затем нажал в поле с формулой и вставил текст в формулу ПОИСК, после чего нажал Ctrl+Enter чтобы функция применилась ко всем выделенным ячейкам

Часть ячеек в столбце В изменились, часть осталась = 0, сортируем столбец по убыванию, это переместит все ячейки с текстом в верхнюю часть. Копируем Все ячейки с текстом и вставляем обратно только значения


Затем снова открываем сортировку и фильтр, снимаем галочку с "Выделить все" и ставим только на "0", что бы те строки где мы уже получили нужный текст скрылись и не мешали

После чего повторяем. Заходим в ту ячейку столбца А, с права от которой "0", копируем то что должно быть началом, жмякаем по прямоугольнику, вставляем текст в ф. ПОИСК (не забудьте что там два раза используется ф.ПОИСК, вставляем в обе), Ctrl+Enter, и т.д.
Когда все данны измените как надо, используйте столбец D для сортировки по порядку номера,

Это тоже будет не быстро, но определенно намного быстрее, чем делать каждую ячейку вручную
К сообщению приложен файл: 6116134.xlsx (401.4 Kb)


Сообщение отредактировал ZetMenChavo - Воскресенье, 16.05.2021, 19:13
 
Ответить
СообщениеЖирик, Сделал следующее. в столбце С использовал формулу
Код
=ЕСЛИОШИБКА(ПСТР(A2;ПОИСК("EcoContact";A2);250)&" "&ЛЕВСИМВ(A2;ПОИСК("EcoContact";A2)-1);"█")

в столбце В
Код
=ЕСЛИ(C2="█";;C2)

Столбец D пронумеровал, это пригодиться для сортировки. Выделил область со всеми данными и формулами, зашёл во вкладку "Данные" и нажал Фильтр.

Затем я делал следующее: из ячейки в столбце А выделил ту часть текста которая должна быть началом "EcoContact", затем нажал на черный прямоугольник в столбце С чтобы выделился весь столбец, затем нажал в поле с формулой и вставил текст в формулу ПОИСК, после чего нажал Ctrl+Enter чтобы функция применилась ко всем выделенным ячейкам

Часть ячеек в столбце В изменились, часть осталась = 0, сортируем столбец по убыванию, это переместит все ячейки с текстом в верхнюю часть. Копируем Все ячейки с текстом и вставляем обратно только значения


Затем снова открываем сортировку и фильтр, снимаем галочку с "Выделить все" и ставим только на "0", что бы те строки где мы уже получили нужный текст скрылись и не мешали

После чего повторяем. Заходим в ту ячейку столбца А, с права от которой "0", копируем то что должно быть началом, жмякаем по прямоугольнику, вставляем текст в ф. ПОИСК (не забудьте что там два раза используется ф.ПОИСК, вставляем в обе), Ctrl+Enter, и т.д.
Когда все данны измените как надо, используйте столбец D для сортировки по порядку номера,

Это тоже будет не быстро, но определенно намного быстрее, чем делать каждую ячейку вручную

Автор - ZetMenChavo
Дата добавления - 16.05.2021 в 19:11
Жирик Дата: Четверг, 20.05.2021, 10:20 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

СПС, попробую.
 
Ответить
СообщениеСПС, попробую.

Автор - Жирик
Дата добавления - 20.05.2021 в 10:20
Nic70y Дата: Четверг, 20.05.2021, 13:39 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8712
Репутация: 2262 ±
Замечаний: 0% ±

Excel 2010
вариант
Код
=ПСТР(A218;МИН(ЕСЛИ(ЕОШ(ПОИСК(" ";ПСТР(A218;СТРОКА($A$11:$A$42);6)));СТРОКА($A$11:$A$42)));99)&" "&ЛЕВБ(A218;МИН(ЕСЛИ(ЕОШ(ПОИСК(" ";ПСТР(A218;СТРОКА($A$11:$A$42);6)));СТРОКА($A$11:$A$42)))-2)
массивная
К сообщению приложен файл: 0278513.xlsx (481.3 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 20.05.2021, 13:40
 
Ответить
Сообщениевариант
Код
=ПСТР(A218;МИН(ЕСЛИ(ЕОШ(ПОИСК(" ";ПСТР(A218;СТРОКА($A$11:$A$42);6)));СТРОКА($A$11:$A$42)));99)&" "&ЛЕВБ(A218;МИН(ЕСЛИ(ЕОШ(ПОИСК(" ";ПСТР(A218;СТРОКА($A$11:$A$42);6)));СТРОКА($A$11:$A$42)))-2)
массивная

Автор - Nic70y
Дата добавления - 20.05.2021 в 13:39
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Обмен местами значений в строке (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!