Добрый день. Подскажите, пожалуйста, возможно ли сделать сортировку в pq, по определенным правилам, а именно: 1. Сортировка по колонке Атрибут (От большего к меньшему или на оборот, не важно). 2. Сортировка по колонке Столбец1, но так, чтобы первые 3 значения в этом столбце были с наибольшим показателем (числом), следующие 3 с наименьшим числом, а последующие в хаотичном порядке? Вводные данные на листе Таблица2 (2).
Добрый день. Подскажите, пожалуйста, возможно ли сделать сортировку в pq, по определенным правилам, а именно: 1. Сортировка по колонке Атрибут (От большего к меньшему или на оборот, не важно). 2. Сортировка по колонке Столбец1, но так, чтобы первые 3 значения в этом столбце были с наибольшим показателем (числом), следующие 3 с наименьшим числом, а последующие в хаотичном порядке? Вводные данные на листе Таблица2 (2).elycioo
elycioo, можно. Сначала группируем по колонке "Атрибут". А потом сортируем полученные таблицы, вылепляем первые 3, последние 3 , оставшиеся. Все склеиваем обратно и "expand" [vba]
Код
let Source = Excel.CurrentWorkbook(){[Name="Таблица2__2"]}[Content], grouped = Table.Group(Source, {"Атрибут"}, {{"all_rows", each Table.Sort(_, {"Столбец1", Order.Descending})}}), sorted_attribute = Table.Sort(grouped, {"Атрибут"}), fx_sorting = (tbl as table) as table => let lst = List.Buffer(Table.ToRows(tbl)), max3 = List.FirstN(lst, 3), min3 = List.LastN(List.Difference(lst, max3), 3), between = List.Difference(lst, max3 & min3), result = Table.FromRows(List.Combine({max3, min3, between}), Table.ColumnNames(tbl)) in result, sort_column1 = Table.TransformColumns(sorted_attribute, {"all_rows", each fx_sorting(_)}), expand = Table.ExpandTableColumn(sort_column1, "all_rows", {"Значение", "Столбец1"}, {"Значение", "Столбец1"}) in expand
[/vba]
elycioo, можно. Сначала группируем по колонке "Атрибут". А потом сортируем полученные таблицы, вылепляем первые 3, последние 3 , оставшиеся. Все склеиваем обратно и "expand" [vba]
Код
let Source = Excel.CurrentWorkbook(){[Name="Таблица2__2"]}[Content], grouped = Table.Group(Source, {"Атрибут"}, {{"all_rows", each Table.Sort(_, {"Столбец1", Order.Descending})}}), sorted_attribute = Table.Sort(grouped, {"Атрибут"}), fx_sorting = (tbl as table) as table => let lst = List.Buffer(Table.ToRows(tbl)), max3 = List.FirstN(lst, 3), min3 = List.LastN(List.Difference(lst, max3), 3), between = List.Difference(lst, max3 & min3), result = Table.FromRows(List.Combine({max3, min3, between}), Table.ColumnNames(tbl)) in result, sort_column1 = Table.TransformColumns(sorted_attribute, {"all_rows", each fx_sorting(_)}), expand = Table.ExpandTableColumn(sort_column1, "all_rows", {"Значение", "Столбец1"}, {"Значение", "Столбец1"}) in expand
AlienSphinx, Подскажите, вижу, что первые 3 значения идут с максимальным числом, следующие 3 с минимальным, а вот остальные по убыванию. Как сделать так, чтобы остальные были в хаотичном порядке, без каких либо закономерностей?
AlienSphinx, Подскажите, вижу, что первые 3 значения идут с максимальным числом, следующие 3 с минимальным, а вот остальные по убыванию. Как сделать так, чтобы остальные были в хаотичном порядке, без каких либо закономерностей?elycioo