Всем добрый день. Обычная ситуация - есть два столбца в Excel (обработанная выписка из ЕГРП) - в одном название поля, в другом значение (например: в первом площадь,, во втором - 50 м.кв.). Все переведено в формат "текст". Получается всего 27 объектов по 11 разных записей на каждый объект. В итоге, при применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции". Но объем всего ничего - должно получиться 11 столбцов и 27 строчек. В чем может быть причина? Выкладываю скриншоты, файл Excel возможно содержит коммерческие сведения.
Дмитрий(The_Prist) Щербаков, тут ошибка именно в том, что Вы указали Zagadka, в результирующих «ячейках» сведения изначально список значений, которые попадают под условие текущей строки и столбца. Список может быть пустым {}, с одним значением {«а»}, и несколькими значениями {«а», «б», …}. Зависит от того, сколько значений соответствует пересечению строки и столбца. Вы указываете «не агрегировать», что, в случае нескольких элементов, даст ошибку. Чтобы из списка получить текст с перечислением всех элементов списка воспользуйтесь последним аргументом Table.Pivot - агрегирующей функцией. К примеру, Table.Pivot ( …, (x) => Text.Combine ( x, “;#(lf)” ) ). Все значения будут разделены ; и переносом строки.
surkenny, странно. На похожей таблице с гораздо большим количеством строк, "Столбец сведения" работал без проблем... P.S. Всё получилось. (x)=> - это мы переменную задали?!)
Zagadka, при чем тут количество строк? Таблицу x a x b Вы не сведете, потому что Вы не указали PQ, что делать со списком { “a”, “b” }. Перечитайте мое сообщение. Если для какой-то строки и столбца уже сведенной таблицы будут соответствовать несколько строк плоской, то там будет ошибка. Потому что у Вас несколько значений. С ними нужно что-то сделать: просуммировать, конкатенировать, вывести только первое и тп.
Zagadka, я с большой вероятностью предполагаю, что Вам нужно. Но я не хочу думать за Вас Ну можно же вместо pivot использовать группировку и тупо транспонирование внутри группировки. Или нельзя? И лучше немного по-другому, но сложнее будет объяснить Я прошу помогающих притормозить. Мне надоели темы типа ЭТОЙ (уже миллион раз тут группировка и List.Generate внутри разбирались ).
Я могу ошибаться, пусть меня модераторы или коллеги поправят, но ТС должен (-а) подумать перед вопросом. Нужно помочь (в идеале - научить) с проблемой. А не решить за ТС.
surkenny, да, мною не тот прием был использован для нужного результата. Что касается применения List.Generate, то на простых задачах теоретическое понимание есть его применения, а вот на практике не хватает опыта...нет комплексного понимания что делать для конечного результата...
Zagadka, а как Вы не путаетесь в бесконечно создаваемых столбцах и фильтрах? Надеюсь, суть фильтров и замен понял правильно, проследить логику было тяжело И попробовал понять, что же Вам нужно в результате:
Код
let
src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
typed = Table.TransformColumnTypes ( src, { { "Столбец3", type text }, { "Столбец4", type text }, { "Столбец5", type text } } ),
filter = Table.SelectRows (
typed,
each not Text.Contains ( [Столбец3] ?? ".", "." ) and [Столбец3] <> [Столбец4] and not Text.StartsWith ( [Столбец3], "недвижимости:" )
),
transform = Table.FromRecords (
Table.TransformRows (
filter,
( r ) =>
Record.TransformFields (
r,
{
{
"Столбец3",
( x ) =>
List.Accumulate (
{
{ "Виды разрешенного использования объекта", "Виды разрешенного использования объекта недвижимости:" },
{ "Виды разрешенного использования объекта недвижимости: недвижимости:", "Виды разрешенного использования объекта недвижимости:" }
},
x,
( s, c ) => Text.Replace ( s, c{0}, c{1} )
)
},
{ "Столбец4", ( x ) => x ?? r[Столбец5] }
}
)
)
),
fillDown = Table.FillDown ( transform, { "Столбец1" } ),
group = Table.Group (
fillDown,
{ "Столбец1" },
{ { "tbl", ( t ) => Table.FromList ( { t[Столбец4] }, ( x ) => x, t[Столбец3] ), type table } },
GroupKind.Local
),
combine = Table.Combine ( group[tbl] )
in
combine
surkenny, не путаюсь, потому что применяемые шаги простые и обработка идет обычно к конкретному столбцу, затем последовательно, к другому, главное внимание. Суть фильтров и замен поняли правильно, результат - тоже.