Страницы: 1
RSS
Как рассортировать данные, после разделения по столбцам?
 

Всем привет!

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

При разбивке текста по столбцам оказалось, что в данных есть пропуски. Из-за этого таблица съезжает. Потеря единицы данных сдвигает материал в строке на две ячейки влево. В идеале таблица должна иметь вид, как Лист3.

Для решения этой задачи подсказал следующий код, для Power Query:

Код
let

    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

    split = Table.SplitColumn(from, "Столбец1",

Splitter.SplitTextByDelimiter("{")),

   
f=(x)=>[a=List.RemoveNulls(Record.ToList(x)), b=a{0},

            c = List.Split(List.Skip(a,1),2),

            d = List.Accumulate(c,[Имя=b],(x,y)=>if Record.HasFields(x,y{0})

                    then Record.AddField(x,y{0}&"1",y{1})

                    else Record.AddField(x,y{0},y{1}))][d],

    tbl = Table.AddColumn(split,"tmp",each f(_)),

    to = Table.FromRecords(tbl[tmp],null, MissingField.UseNull)

in

    to

При применении этого кода постоянно вылазит ошибка Expression.Error: Аргументы 3 были переданы функции, которая ожидает значения между 1 и 2. Жалуется на (см. красную строчку)

Хочу узнать:

1)    В условиях поставленной задачи на верном ли я пути?

2)    Если да, то почему возникает ошибка Expression.Error:

3)    Если нет, как можно раскидать данные, чтобы привести таблицу к виду Лист3

Версия: Excel 2013 (x32).

Версия: PowerQuery_2.59.5135.201 (32-bit) [ru-RU]

Тема также затронута на Excelworld

Изменено: Андрей - 20.11.2020 19:38:00
 
Цитата
Андрей написал:
Жалуется на (см. красную строчку)
где эта красная строчка? Если не ошибаюсь раньше MissingField.UseNull, т.е. третьего аргумента Table.FromRecords не было
Цитата
Андрей написал:
нашел следующий код
да как бы кросс, искатель вы наш
Изменено: buchlotnik - 20.11.2020 18:09:43
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал: где эта красная строчка?
to = Table.FromRecords(tbl[tmp],null, MissingField.UseNull)
Оформил текст в виде кода и не заметил, что она исчезла.

Цитата
buchlotnik написал: да как бы  кросс , искатель вы наш
Каюсь, тема тоже моя. Уж очень интересно найти решение, поэтому решил задать вопрос и тут.
 
Раз 2013 - придется костыль дописать, доберусь до компа сделаю; сразу  вопрос - там только у одного батюшки вылезало два места работы - этот столбец нужен или второе место работы игнорировать?
Соблюдение правил форума не освобождает от модераторского произвола
 
Можно игнорировать.  
 
Дубль только один. Excelworld, но там изменить сообщение не получается, а здесь отредактировал
 
Нельзя там добавить сообщение?

Посмотрите на свое поледнее сообщение.
В цитату вставили и текст о цитировании!!! Вы думаете над тем, что Вам пишут, что цитируете?!

И как трудно самому найти правила и ознакомиться с ними, чтобы не получать замечаний...
Цитата
  4.2. Чрезменое цитирование. Цитата – часть текста, на которой делается акцент. Бездумное цитирование захламляет тему и очень затрудняет ее восприятие. Для простого ответа есть кнопка «Ответить».
 
м.б. так...
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
del
Изменено: buchlotnik - 23.08.2021 17:47:38
Соблюдение правил форума не освобождает от модераторского произвола
 
Михаил Лебедев, Спасибо. Все подходит  
Страницы: 1
Наверх