Страницы: 1
RSS
Разделение одной ячейки на несколько строк
 
Добрый день!
Извиняюсь, если тема уже где-то была, пролистал пару-тройку страниц и не нашел похожего.
Нужно разделить ячейку в которой есть несколько строк текста, на несколько ячеек.
Например, в одной ячейке текст:
1
2
3
4
5
Нужно сделать из одной ячейки пять ячеек-строк, в каждой по одной цифре.
 
Скопировал Ваш пример в ячейку А1. В А2 написал формулу:
=ПСТР($A$1;(СТРОКА()-2)*3+1;1)
и протянул вниз. Сработало.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
А у меня что-то никак... Что я делаю не так?
 
пример полная фигня у вас же на самом деле не по 1 цифре в строке
Лень двигатель прогресса, доказано!!!
 
У меня в одной ячейке 5 строк, разделенных символами переноса на следующую строку, из этого мне надо сделать 5 ячеек построчно... плохо объяснил в первый раз? Или есть какой-то другой способ сделать 5 строк в одной ячейке? для меня это именно 5 строк в одной ячейке...
Изменено: Raileg - 29.09.2017 12:04:34
 
Цитата
Raileg написал:
плохо объяснил в первый раз
поясняю второй раз пример нужен с приближенными к реальности данными, а не 1 2 3 4 5
Лень двигатель прогресса, доказано!!!
 
Код
=ПСТР(ПОДСТАВИТЬ($A$1;СИМВОЛ(10);"");СТОЛБЕЦ()-1;1)
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Ну с реальными, так с реальными :) Вот нужно здесь из одной строки сделать 13, чтобы каждое значение из столбца В стало отдельной ячейкой, столбец А просто копируется для каждой строки.
 
Цитата
Raileg написал:
Ну с реальными, так с реальными
Уговорили наконец-то.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
в С1 и растягиваем вправо
Код
=ЕСЛИ(ЕОШИБКА(ПСТР($B1;ПОИСК("///";ПОДСТАВИТЬ($B1;"FCA";"///";СТОЛБЕЦ(A1)));ПОИСК("\\\";ПОДСТАВИТЬ($B1;"FCA";"\\\";СТОЛБЕЦ(A1)+1))-ПОИСК("///";ПОДСТАВИТЬ($B1;"FCA";"///";СТОЛБЕЦ(A1)))));СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ($B1;СИМВОЛ(10);ПОВТОР(" ";50));50));ПСТР($B1;ПОИСК("///";ПОДСТАВИТЬ($B1;"FCA";"///";СТОЛБЕЦ(A1)));ПОИСК("\\\";ПОДСТАВИТЬ($B1;"FCA";"\\\";СТОЛБЕЦ(A1)+1))-ПОИСК("///";ПОДСТАВИТЬ($B1;"FCA";"///";СТОЛБЕЦ(A1)))))
Лень двигатель прогресса, доказано!!!
 
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(СИМВОЛ(10)&$B$1;СИМВОЛ(10);ПОВТОР(" ";999));СТРОКА(A1)*999;999))
 
оптимизация однако vikttur, 8)  
Лень двигатель прогресса, доказано!!!
 
Большое всем спасибо! :)
 
Код
Sub SplitChr()
Dim a&, i&, y&, lstr&, lstr2&
lstr = Cells(Rows.Count, 2).End(xlUp).Row
For y = 1 To lstr
    a = UBound(Split(Cells(y, 2), Chr(10)))
    For i = 0 To a
        lstr2 = Cells(Rows.Count, 1).End(xlUp).Row + 1
        Cells(lstr2, 1) = Split(Cells(y, 2), Chr(10))(i)
    Next
Next y
End Sub
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Добрый день, а если в ячейке А1 стоит значение 11112 как то можно каждую цифру отдельно вынести на пять строк ниже?
 
Код
=ПСТР(A1;ПОСЛЕД(ДЛСТР(A1));1)
 
Цитата
как то можно каждую цифру отдельно вынести на пять строк ниже
Код
Sub test()
Dim n As Integer
   For n = Len(Range("A1")) To 1 Step -1
     Rows(2).Insert
     Range("A2") = Mid(Range("A1"), n, 1)
   Next
End Sub
 
Спасибо Тимофеев и Kuzmich помогло.
 
Ребята. не смог найти решение схожей но более сложной задачки :(

помогите, пожалуйста.

нужно разбить построчно много ячеек из исходной строки.

пример с данными лежит в двух листах, на одном из листов данные перемежаются со строками, которые не нужно изменять

 
Andrew Kazekin, попробуйте Power Query
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Строки = Table.Skip(Источник,1),
    Повыш = Table.PromoteHeaders(Строки, [PromoteAllScalars=true]),
    Заголовки = List.Skip(Table.ColumnNames(Повыш), 8),
    Результат = List.Accumulate(Заголовки,Повыш,(z,z2) => Table.SplitColumn(z, z2, Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv),3)),
    Заголовки2 = List.ReplaceValue(List.ReplaceValue(List.ReplaceValue(
        List.ReplaceRange(Table.ColumnNames(Результат), 0, 4, {"Локализация, нозологическая форма", "Код МКБ10", "Станд. показатель", "Ошибка станб. показателя"}),
            ".1", " Абс. число", Replacer.ReplaceText), 
            ".2", " Грубый", Replacer.ReplaceText), 
            ".3", " Уд вес", Replacer.ReplaceText),
    Переименование = Table.RenameColumns(Результат,List.Zip({Table.ColumnNames(Результат),Заголовки2})),
    Удаленные_столбцы = Table.RemoveColumns(Переименование,{"Column8"})
in
    Удаленные_столбцы
 
Цитата
написал:
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(СИМВОЛ(10)&$B$1;СИМВОЛ(10);ПОВТОР(" ";999));СТРОКА(A1)*999;999))
Приветсвую, камрады!
Помогите, пожалуйста, разобраться с этой формулой.
В моём файле она работает корректно только отчасти, так как в ячейке около 3000 символов.
Данная формула, при достижении 998-го, просто обрывает текст и переносит его в следующую ячейку.
Простое увеличение количества символов приводит к тому, что строки переносятся некоректно, а именно просто продолжаются после знака переноса (символ(10)).
 
Тема старая, разбираться в ней не очень уже.
Приложите свой пример (так есть - так нужно)
И да, просто замена 999 на 9999 не помогает?
Скажи мне, кудесник, любимец ба’гов...
 
Просто замена 999 на 9999 - даёт то, что из ячейки убираются все переносы строк и заменяются на пробелы. То есть просто весь текст записывается в строку, без переносов.
 
Приветсвую
Не могу найти как разделить данные из одной ячейки для моего случая.
Помогите пожалуйста :/
Изменено: max2000 - 12.07.2024 21:49:42
 
АннаО, Ваш вопрос перенесен в тему
Построчное транспонирование таблицы с заголовком.
Изменено: Sanja - 20.03.2025 04:59:23
Согласие есть продукт при полном непротивлении сторон
 
Добрый день. Подскажите есть возможность автоматизировать разбиение нескольких строк в нескольких столбцах на отдельные строки.
Пример как есть и как должно быть в файле
 
Выделите ячейки, запустите макрос "Разделить".
Скрытый текст
 
Здравствуйте!
pq
 
Вариант.
Код
 
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    nms=List.FirstN(List.Skip(Table.ColumnNames(from)),3),
    cols=List.Transform(nms,(x)=>{x,(y)=>Text.Split(y,"#(lf)")}),
    f=(x,i)=>if i>List.Count(nms)-1 then x else @f(Table.ExpandListColumn(x,nms{i}),i+1),
    to = f(Table.TransformColumns(from,cols),0)
in
   to



Изменено: Artem_1990 - 25.04.2025 18:04:45
Страницы: 1
Читают тему
Наверх