Excel: как отобразить тройку «победителей» по возрасту и полу?

Excel: как отобразить тройку «победителей» по возрасту и полу?

Я хотел бы использовать Excel для управления данными для марафона. Марафон группирует победителей по ageи genderв category, и присуждает призы за первое-третье место в каждом category.

Можно ли использовать Excel для динамического определения победителей, вводя данные на одном листе и автоматически рассчитывая результаты и отображая их на другом листе каким-либо образом?

У меня есть один рабочий лист, содержащий следующие данные для каждой строки:

name, age, gender, age category, overall rank

Я открыт для подходов на основе функций VBA и Excel. Спасибо!

решение1

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

  • На вкладке «Разработчик» нажмите «Visual Basic».
  • Разверните папку «Объекты Microsoft Excel» и просмотрите код для Листа1.
  • Создайте новую функцию с именем:

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

Эта функция вызывается всякий раз, когда изменяются данные на рабочем листе1.

Чтобы обновить данные на основе столбца рейтинга и сделать следующие предположения:
данные находятся в следующих столбцах: Имя: столбец A, Возраст: столбец B, Пол: столбец C, Категория: столбец D, Общий рейтинг: столбец E.

В подпрограмме Worksheet_Change сравните значение в столбце E, столбце рейтинга и перенесите содержимое строки, если участник занял одно из первых четырех мест.

'If data is changed within column 5 (ranking column), repopulate worksheet2
If Target.Column = 5 Then
    'Remove all of the old rows except the header
    Sheets(2).Rows("2:" & CStr(Sheets(2).UsedRange.Rows.Count)).EntireRow.Delete

    'For each row on worksheet1 check if the value in column "E", if the ranking column is less than 4, if it is copy the row onto worksheet2
    Dim rowCounter As Integer: rowCounter = 1
    For i = 1 To Sheets(1).UsedRange.Rows.Count Step 1
        If (Sheets(1).Range("E" & CStr(i)).Value < 4 And Sheets(1).Range("E" & CStr(i)).Value <> "") Then
            Sheets(2).Range("A" & CStr(rowCounter + 1)).Value = Sheets(1).Range("A" & CStr(i)).Value
            Sheets(2).Range("B" & CStr(rowCounter + 1)).Value = Sheets(1).Range("B" & CStr(i)).Value
            Sheets(2).Range("C" & CStr(rowCounter + 1)).Value = Sheets(1).Range("C" & CStr(i)).Value
            Sheets(2).Range("D" & CStr(rowCounter + 1)).Value = Sheets(1).Range("D" & CStr(i)).Value
            Sheets(2).Range("E" & CStr(rowCounter + 1)).Value = Sheets(1).Range("E" & CStr(i)).Value
            rowCounter = rowCounter + 1
        End If
    Next i
End If

При необходимости введите здесь алгоритм сортировки после переноса данных.

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

решение2

Да. То, что вы описываете, — это сводная таблица. Щелкните ячейку в исходной таблице данных, вставьте сводную таблицу, нажмите ОК. По умолчанию она будет создана на новом листе. Перетащите возрастную группу, пол и имя в область строк, а ранг — в область значений.

Щелкните правой кнопкой мыши по любому из имен в сводке и используйте Фильтр > Топ 10. Предположим, что верхний ранг равен 1, измените «Верхний» на «Нижний», 10 на 3, и вы получите что-то похожее на это:

введите описание изображения здесь

Если вы создаете сводную таблицу на основе таблицы Excel (созданной с помощью команды «Вставка» > «Таблица»), то вы можете добавить данные в исходную таблицу, обновить сводную таблицу (на ленте инструментов «Сводная таблица»), и будут отображены текущие результаты.

Копия файла естьздесь.

решение3

для возрастной категории вы можете попробовать сгруппировать их вместе, используя

=IF(*ConditionForCatI*,CatI,IF(*ConditionForCatII*,CatII,...)))

пока не будут заполнены все категории. После этого выберите фильтр под данными. Это позволит вам сортировать их по возрастной группе или полу. (например, если вы хотите сортировать по полу):

  1. нажмите стрелку вниз рядом с заголовком «пол»
  2. выберите только мужчину или только женщину
  3. нажмите стрелку вниз рядом с заголовком времени (я предполагаю, что у вас будет заголовок времени, чтобы определить победителя)
  4. Сортируйте от А до Я, так как это от наименьшего к наибольшему, и победителем будет признан наименьший хронометраж.

Сделайте то же самое для других категорий, и вы сможете найти победителей.

Ваше здоровье

Связанный контент