Распределение текста по столбцам с помощью макросов

Автор Duracell, 11 января 2018, 13:30

0 Пользователи и 1 гость просматривают эту тему.

Duracell

Доброго времени суток. Привет всем. У меня такая задача: есть текст, который нужно разбить по столбцам на другом листе. Я вложил файл, там все четко и ясно :)

economist

Макросов здесь не надо, формулами, можно прямо на этом же листе (вложение).
После копирования формул - можно включить автофильтр и получить нужную таблицу.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Duracell

Видимо вы не поняли задачи, они ведь находятся в разных ячейках, так не получится как вы говорите

economist

Но у меня ведь получилось (вложение в #1, см. столбцы J:M)! 

Это называется трансформация таблицы формулами с относительными ссылками - таблица в "столбик" - превращается в "нормализованную" таблицу, где одна запись - одна строка.

Формулы можно скопировать в начало каждой "секции" из 10 строк очень быстро, быстрее чем написать макрос.
Их даже можно накопировать до 1 млн-ной строки, чтобы хватило на несколько лет. Дел - на 10 минут, не более.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Начните с формулы

=TEXTJOIN(" ";TRUE();OFFSET($Входные.$1:$1;(ROW()-1)*10+COLUMN()-1;0))

в ячейках A1:I2 на листе результатов. Там ещё пока есть заголовки в каждой ячейке, но это можно сделать дальше.
С уважением,
Михаил Каганский

Duracell

Благодарю за ответ. Вы на верном пути, однако textjoin это в excel. Я уже сделал без макроса формулой, через =concatenate и вставил по столбцам. Однако если у меня будет 500к строк, тогда боюсь компуктер мой не выдержит, и формулы подвиснут. Поэтому я и прошу у Вас варианты через макросы.

mikekaganski

С уважением,
Михаил Каганский

Duracell

Я не знаю, я впервые слышу о такой формуле =textjoin, у меня в калке оно не высвечиватся как формула, и в гугле пишу такого нет в ЛО. НО не в этом суть, формулой у меня работает все уже на ура, дело в том что макросы я очень плохо знаю, а мне как раз нужно с их помощью выполнить это задание, ибо формулами будет виснуть комп

bigor

#8
выложи таблицу с формулами, по ней попробую сделать макрос. А то по твоему примеру
хз куда женщин девать :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

kompilainenn

#9
Цитата: Duracell от 12 января 2018, 12:47Я не знаю, я впервые слышу о такой формуле =textjoin, у меня в калке оно не высвечиватся как формула, и в гугле пишу такого нет в ЛО
версия офиса? TEXTJOIN в LibreOffice 5.2 появилась

https://i.imgur.com/twFJEJG.png
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

mikekaganski

Цитата: Bigor от 12 января 2018, 14:50
выложи таблицу с формулами, по ней попробую сделать макрос. А то по твоему примеру
хз куда женщин девать :)

Формула дана в #5. Там просто нужно ещё из строки убрать всё до первого двоеточия включительно.
С уважением,
Михаил Каганский

bigor

#11
Цитата: mikekaganski от 12 января 2018, 13:00Формула дана в #5
Это твоя формула :) В ней женщины тож в чемпионат попадают. Я хочу таблицу от автора
Цитата: Duracell от 12 января 2018, 12:38Я уже сделал без макроса формулой, через =concatenate и вставил по столбцам
что бы самому не думать куда что вставлять
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

mikekaganski

Женщины должны попадать в чемпионат. (Или у нас неравенство??? ;-) ) Проблема была в том, что в первом ответе название чемпионата ограничивалось единственным словом "женщины".
С уважением,
Михаил Каганский

bigor

ТС виднее куда женщины должны попасть :) да и мне  =concatenate проще в макросе описать, чем =TEXTJOIN :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

rami

Формулами может и можно, но будет очень не просто.

Вот вариант с макросом:

P.S. первый вариант работал, но не на российской локали. Переписал, работает на разных локалях, пробуйте. Обратите внимание на красные ячейки.