Страницы: 1
RSS
Преобразование таблицы с выборкой и удалением дубликатов
 
Доброго времени суток. Проблема следующая: необходимо преобразовать таблицу необычным образом. Необходимо с помощью формул или макроса, чтобы прошла выборка по вертикале столбца, и осталось только по одному уникальному значению. После этого в строчку напротив каждого уникального значения по очереди были записаны все значения (индексы) из главной таблицы. И получится что первая вертикальная таблица станет более горизонтальной.
На форуме увы не нашел ни чего подобного. Помогите словом добрым или ссылкой. Спасибо.
Файл приложил.
 
Здравствуйте.
Вариант со сводной по доп. столбцу с формулой
Код
=СЧЁТЕСЛИ($A$2:A3;A3)


И вариант в Power Query
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Дано"]}[Content],
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Глав. Ст.", type text}, {"Индекс", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Глав. Ст."}, {{"Индексы", each [Индекс], type list}}),
    Custom1 = Table.TransformColumns(#"Grouped Rows",{{"Индексы",each Table.FromRows({_})}}),
    Custom2 = List.Zip(List.Transform({1..List.Max(List.Transform(#"Grouped Rows"[Индексы],List.Count))},each {"Column"&Text.From(_),"Инд."&Text.From(_)})),
    Custom3 = Table.TransformColumns(#"Grouped Rows",{{"Индексы",each Table.FromRows({_})}}),
    #"Expanded {0}" = Table.ExpandTableColumn(Custom3, "Индексы", Custom2{0}, Custom2{1})
in
    #"Expanded {0}"
Изменено: Андрей Лящук - 23.07.2019 19:58:26
 
Андрей спасибо, но в исходном файле в табличке не 20 главных значений, а примерно 15 тысяч. и при изменении индекса в главной таблице формула не работает, и не переделывает горизонтальные таблички.
Макрос Ваш сейчас протестирую.
 
Цитата
Андрей Лящук написал:
Здравствуйте.Вариант со сводной по доп. столбцу с формулой
Андрей спасибо, но в исходном файле в табличке не 20 главных значений, а примерно 15 тысяч. и при изменении индекса в главной таблице формула не работает, и не переделывает горизонтальные таблички.
Макрос Ваш сейчас протестирую.
 
Ещё вариант на PQ:
Код
let
    source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    chtype = Table.TransformColumnTypes(source,{{"Индекс", type text}}),
    group = Table.Group(chtype, {"Глав"}, {{"Количество",each Table.RowCount(_),type number},{"инд", each Text.Combine([Индекс]," "), type text}}),
    max = List.Max(Table.Column(group,"Количество")),
    split= Table.SplitColumn(group, "инд", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), max),
    del=Table.RemoveColumns(split,{"Количество"})
in
    del
Изменено: buchlotnik - 23.07.2019 22:24:12
Соблюдение правил форума не освобождает от модераторского произвола
 
Доброе время суток.
Ещё вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    toTable = Table.Group(Source, {"Глав"}, {"temp", each Table.FromRows({{_{0}[Глав]} & [Индекс]})}),
    toCommon = Table.Combine(toTable[temp]),
    newNames = {{"Column1", "Глав"}} & List.Transform({1..(Table.ColumnCount(toCommon) - 1)}, each {"Column" & Text.From(_ + 1), "Инд. " & Text.From(_)}),
    result = Table.RenameColumns(toCommon, newNames)
in
    result
 
Доброго времени суток, до кучи:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    group = Table.Group(Source, {"Глав. Ст."}, {{"temp", each Table.Transpose(_){1}}, {"cnt", Table.RowCount}}),
    func = (x)=> List.Transform({1..List.Max(group[cnt])}, each x & Text.From(_)),
    expand = Table.ExpandRecordColumn(Table.RemoveColumns(group,{"cnt"}), "temp", func("Column"), func("инд."))
in
    expand
 
Огромнейшее всем спасибо! Новый день, новое утро. Сейчас начну тестировать все что вы прислали, уверен что то да поможет.
Страницы: 1
Наверх