Получить список 10 лучших с дубликатами - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь получить список 10 лучших в Excel. У меня есть небольшие трудности с дубликатами. Как я могу отобразить дубликаты имен для каждого уровня ранга?

enter image description here

Формула, которую я имею в колонке рангов (E):

=IF(ISBLANK(C4)," ",IF(MATCH(C4,C:C,0)=ROW(),COUNTIF(C:C,C4),"Already Counted"))

Формула, которую я имею в колонке заказов (I):

=LARGE($E$3:$E$3999,G3)

Формула, которую я имею в колонке имен (H):

=INDEX($C$3:$C$3999,MATCH(I3,$E$3:$E$3999,0))

Как мне получить список имен для отображения дубликатов? Например, в порядке 2 должно быть 14 ходов и Дэн Галвин; не 14 ходов отображается дважды. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2020

Использование Power Query

  • Сортировка строк по рангу по убыванию
  • Удаление дубликатов (выбор столбца Agent)
  • Возврат первых 10 строк результирующей таблицы

Последние несколько строк MCode необходимо вставить вручную в расширенный редактор. Первые строки можно сделать из пользовательского интерфейса.

Если вы не хотите входить в расширенный редактор, после сортировки и удаления дубликатов вы можете добавить столбец индекса и затем отфильтровать значение .



    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Agent", type text}, {"Rank", type any}}),
        #"Sorted Rows" = Table.Sort(#"Changed Type",{{"Rank", Order.Descending}}),
        #"Removed Duplicates" = Table.Distinct(#"Sorted Rows", {"Agent"}),
        Top10 = Table.FirstN(#"Removed Duplicates",10)
    in
        Top10

enter image description here

0 голосов
/ 07 февраля 2020

Если бы у вас был Office 365, функции SORT() и FILTER() решили бы вашу проблему:

Поместите столбец ранга рядом со столбцом имен (теперь D) и посчитайте дубликаты как 0:

=IF(ISBLANK(C4), "", IF(MATCH(C4, C:C, 0) = ROW(), COUNTIF($C$3:$C$3999, C4), 0))

В первой строке столбца имени (H) введите следующую формулу:

=SORT(FILTER($C$3:$D$3999, $D$3:$D$3999 >= LARGE($D$3:$D$3999, 10)), 2, -1)

То есть, берите только имена людей, чей счет равен или больше, чем 10-е место в рейтинге и сортировка по убыванию по количеству.

PS: это динамические c формулы массива, и они "разливаются" в соседние ячейки.

0 голосов
/ 07 февраля 2020

Вы пробовали это с использованием стола c dinami? Я использую один, чтобы получить этот вывод, посмотреть, если это то, что вы ищете:

enter image description here

Если нет, вы можете поместить данные образца здесь и ожидаемый результат, ткс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...