Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Power Query функция List.Distinct дополнительный критерий - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Power Query функция List.Distinct дополнительный критерий (Формулы/Formulas)
Power Query функция List.Distinct дополнительный критерий
garrys Дата: Понедельник, 07.06.2021, 16:05 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
Подскажите, хочется в List.Distinct использовать equationCriteria в виде текстового фильтра, никак не могу разобраться как.
По таблице - есть два уровня классификации в двух текстовых столбцах, надо транспонировать текстовые столбцы, при этом с определенным фильтром.
пока реализовано так (фильтр по 1 классификации - значения не начинающиеся на "п", 2 - на "в":
[vba]
Код

let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"дата", type date}, {"класс1", type text}, {"класс2", type text}, {"сумма", Int64.Type}}),
    #"Сумма2" = Table.DuplicateColumn(#"Измененный тип", "сумма", "сумма2"),
    кл1 = Table.SelectRows(Сумма2, each not Text.StartsWith([класс1], "п")) [класс1],
    кл2 = Table.SelectRows(Сумма2, each not Text.StartsWith([класс2], "в")) [класс2],
    #"Класс1" = Table.Pivot(Сумма2, List.Distinct(кл1), "класс1", "сумма", List.Sum),
    #"Класс2" = Table.Pivot(#"Класс1", List.Distinct(кл2), "класс2", "сумма2", List.Sum)
in
    #"Класс2"
[/vba]
К сообщению приложен файл: 8336907.xlsx (18.2 Kb)


Сообщение отредактировал garrys - Понедельник, 07.06.2021, 16:07
 
Ответить
СообщениеДобрый день!
Подскажите, хочется в List.Distinct использовать equationCriteria в виде текстового фильтра, никак не могу разобраться как.
По таблице - есть два уровня классификации в двух текстовых столбцах, надо транспонировать текстовые столбцы, при этом с определенным фильтром.
пока реализовано так (фильтр по 1 классификации - значения не начинающиеся на "п", 2 - на "в":
[vba]
Код

let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"дата", type date}, {"класс1", type text}, {"класс2", type text}, {"сумма", Int64.Type}}),
    #"Сумма2" = Table.DuplicateColumn(#"Измененный тип", "сумма", "сумма2"),
    кл1 = Table.SelectRows(Сумма2, each not Text.StartsWith([класс1], "п")) [класс1],
    кл2 = Table.SelectRows(Сумма2, each not Text.StartsWith([класс2], "в")) [класс2],
    #"Класс1" = Table.Pivot(Сумма2, List.Distinct(кл1), "класс1", "сумма", List.Sum),
    #"Класс2" = Table.Pivot(#"Класс1", List.Distinct(кл2), "класс2", "сумма2", List.Sum)
in
    #"Класс2"
[/vba]

Автор - garrys
Дата добавления - 07.06.2021 в 16:05
прохожий2019 Дата: Вторник, 08.06.2021, 00:34 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1241
Репутация: 317 ±
Замечаний: 0% ±

365 Beta Channel
так это ж не фильтр, а критерий сравнения уникальности
вариант:
[vba]
Код
let
    f=(x,y)=>if Text.Start(x,1)<>y then x else null,
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    add = Table.AddColumn(from, "tmp", each List.RemoveNulls({f([класс1],"п"),f([класс2],"в")}))[[дата],[tmp],[сумма]],
    exp = Table.ExpandListColumn(add, "tmp"),
    lst = List.Sort(List.Distinct(List.RemoveNulls(exp[tmp])),{each Text.End(_,1),Order.Ascending}),
    to = Table.Pivot(exp,lst, "tmp", "сумма", List.Sum)
in
    to
[/vba]
К сообщению приложен файл: 9177634.xlsx (49.2 Kb)
 
Ответить
Сообщениетак это ж не фильтр, а критерий сравнения уникальности
вариант:
[vba]
Код
let
    f=(x,y)=>if Text.Start(x,1)<>y then x else null,
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    add = Table.AddColumn(from, "tmp", each List.RemoveNulls({f([класс1],"п"),f([класс2],"в")}))[[дата],[tmp],[сумма]],
    exp = Table.ExpandListColumn(add, "tmp"),
    lst = List.Sort(List.Distinct(List.RemoveNulls(exp[tmp])),{each Text.End(_,1),Order.Ascending}),
    to = Table.Pivot(exp,lst, "tmp", "сумма", List.Sum)
in
    to
[/vba]

Автор - прохожий2019
Дата добавления - 08.06.2021 в 00:34
garrys Дата: Среда, 09.06.2021, 14:56 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо, разбираюсь..
 
Ответить
СообщениеСпасибо, разбираюсь..

Автор - garrys
Дата добавления - 09.06.2021 в 14:56
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Power Query функция List.Distinct дополнительный критерий (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!