Текст по столбцам в Excel
Разбивает строку с разделителем на отдельные столбцы формулой — разбор переживает обновление данных, в отличие от разового мастера. ЛЕВСИМВ берёт первый кусок, ПСТР с заменой разделителя на пробелы — остальные.
Коротко
Приём раскладывает одну строку с разделителем на отдельные столбцы — формулой, а не разовым мастером. Адрес Москва;ул. Ленина;д. 5;кв. 12 становится четырьмя ячейками; ФИО с датой Петров;Иван;Сергеевич;1985 — тоже четырьмя; выгрузка TK-1045;Полка Nord;6200;41 — четырьмя. Поменяли исходную строку — части пересчитались сами.
Исходные строки лежат в столбце B начиная со строки 7, разделитель — в ячейке C4 (по умолчанию точка с запятой). Поставили в неё запятую или пробел — разбор идёт по ним.
Первый кусок берётся отдельной формулой через ЛЕВСИМВ и НАЙТИ: всё, что слева от первого разделителя. Остальные — приёмом с заменой разделителя на 200 пробелов: ПОДСТАВИТЬ раздвигает куски пробелами, а ПСТР вырезает нужный отрезок по счёту. Формулу тянут вправо, меняется только множитель — 1, 2, 3 по числу столбцов. Всё это лежит в файле-песочнице.
То же самое формулой в Excel
=ЕСЛИ($B7="";"";СЖПРОБЕЛЫ(ЛЕВСИМВ($B7;ЕСЛИОШИБКА(НАЙТИ($C$4;$B7)-1;ДЛСТР($B7))))) — часть 1, до первого разделителя: ЛЕВСИМВ берёт всё слева от него, ЕСЛИОШИБКА оставляет строку целиком, если разделителя нет=ЕСЛИОШИБКА(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ($B7;$C$4;ПОВТОР(" ";200));1*200+1;200));"") — часть 2: разделитель заменён на 200 пробелов, ПСТР вырезает второй отрезок; начало — 1*200+1=ЕСЛИОШИБКА(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ($B7;$C$4;ПОВТОР(" ";200));2*200+1;200));"") — часть 3: та же формула, начало сдвинуто на 2*200+1; тяните вправо — меняется только множитель=ЕСЛИ($B$7="";"";ДЛСТР($B$7)-ДЛСТР(ПОДСТАВИТЬ($B$7;$C$4;""))+1) — число частей: длина строки минус её длина без разделителей плюс один — сколько столбцов заводитьТекст по столбцам: песочница на формулах
Вводите строку в жёлтую ячейку и разделитель рядом — части раскладываются по столбцам сразу, формулой. Первый кусок через ЛЕВСИМВ и НАЙТИ, остальные — заменой разделителя на пробелы и ПСТР. Отдельная ячейка показывает, на сколько частей разобьётся строка. Тянется вниз на новые строки без правок.
Файл
tekst-po-stolbtsam.xlsx · формулы работают в Excel 2016 и новее
и в Google Таблицах · без макросов · формулы проходят автопроверку
перед публикацией
Пошагово
- Впишите исходную строку в жёлтую ячейку столбца
B— например, вB7. Разделитель поставьте вC4: точку с запятой, запятую или пробел. - Первый кусок. В соседней ячейке:
=ЕСЛИ($B7="";"";СЖПРОБЕЛЫ(ЛЕВСИМВ($B7;ЕСЛИОШИБКА(НАЙТИ($C$4;$B7)-1;ДЛСТР($B7))))). НАЙТИ находит первый разделитель, ЛЕВСИМВ берёт всё до него, ЕСЛИОШИБКА оставляет строку целиком, если разделителя в ней нет. - Следующие куски. Приём с 200 пробелами: ПОДСТАВИТЬ меняет разделитель на 200 пробелов, ПСТР вырезает отрезок по 200 символов, СЖПРОБЕЛЫ убирает лишние. Для второго куска начало —
1*200+1, для третьего —2*200+1, дальше по образцу. - Закрепите разделитель. Ссылка на ячейку с разделителем идёт со знаком доллара —
$C$4, чтобы при протягивании она не сползла. F4 ставит доллары одним нажатием. - Протяните. Ухватите ячейки за уголок и тяните вправо — по числу столбцов, и вниз — по числу строк. Множитель в ПСТР растёт сам: 1, 2, 3.
- Сверьтесь с числом частей.
=ЕСЛИ($B$7="";"";ДЛСТР($B$7)-ДЛСТР(ПОДСТАВИТЬ($B$7;$C$4;""))+1)показывает, на сколько кусков разобьётся строка — чтобы не завести столбцов меньше, чем нужно.
Где обычно ломается
Три места, где разбор ломается чаще всего:
- Встроенный мастер разовый. «Данные → Текст по столбцам» разрежет строки один раз и про них забудет. Обновили выгрузку, дописали строку — мастер надо запускать заново. Формула пересчитывается сама, поэтому для живых данных берут её, а не мастер.
- Мастер портит артикулы и коды. Значение вроде
05-2026мастер молча посчитает датой, а007— числом7: артикул превращается в дату, ведущие нули пропадают. Формула тип данных не трогает — что было текстом, текстом и остаётся. - Кусок длиннее 200 символов. Приём с заменой разделителя на 200 пробелов держится на том, что каждая часть короче 200 знаков. Если в поле бывает длинный адрес или примечание, поднимите число во всех
ПОВТОРиПСТРс 200 до 300 или 500 — одинаково во всех формулах.