Excel: Como mostrar os 3 primeiros vencedores por idade e sexo?

1

Gostaria de usar o Excel para gerenciar os dados de uma maratona. A maratona agrupa os vencedores por age e gender em category e concede prêmios do primeiro ao terceiro lugar em cada category .

O Excel pode ser usado para determinar os vencedores dinamicamente, inserindo os dados em uma única planilha e tendo os resultados automaticamente calculados e exibidos em outra planilha de alguma forma?

Eu tenho uma única planilha que contém os seguintes dados para cada linha:

name, age, gender, age category, overall rank

Estou aberto a abordagens baseadas em função VBA e Excel. Obrigado!

    
por Brad Parks 20.05.2015 / 02:57

3 respostas

2

Se você quiser atualizar a planilha2 quando os dados da planilha1 forem modificados, você poderá usar o VBA para criar uma página resultante que seja atualizada dinamicamente.

  • Na guia do desenvolvedor, clique em básico visual.
  • Expanda a pasta Objetos do Microsoft Excel e visualize o código da Planilha1
  • Crie uma nova função chamada:

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

Esta função é chamada sempre que os dados na planilha1 são modificados.

Para atualizar os dados com base na coluna de classificações e fazer essas suposições:
Os dados estão dentro dessas colunas Nome: coluna A, Idade: coluna B, Sexo: coluna C, Categoria: coluna D, Classificação geral: coluna E

Na subpasta Worksheet_Change, compare o valor na coluna E, a coluna de classificação e transfira o conteúdo da linha se o concorrente tiver colocado nas quatro primeiras posições.

'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

Insira um algoritmo de classificação aqui, se necessário, após os dados terem sido migrados.

Se você precisar de mais detalhes ou ajudar com a classificação, informe-nos.

    
por 20.05.2015 / 06:28
2

Sim. O que você descreve é uma tabela dinâmica. Clique em uma célula na guia de dados de origem, insira uma tabela dinâmica, clique em OK. Por padrão, ele será criado em uma nova planilha. Arraste Grupo etário, sexo e nome para a área da linha e classifique-a na área do valor.

Clique com o botão direito do mouse em qualquer um dos nomes no pivô e use Filter > Top 10. Assumindo que o topo do ranking é 1, mude o "Top" para "Bottom", 10 para um 3 e você vai acabar com algo semelhante a este:

SevocêbasearatabeladinâmicaemumatabeladoExcel(quefoicriadacomInsert>Table),poderáadicionardadosàtabeladeorigem,atualizaratabeladinâmica(nafaixadeferramentasDinâmica)eosresultadosatuaismostrará.

Umacópiadoarquivoé aqui .

    
por 20.05.2015 / 04:58
1

para a categoria de idade, você pode tentar agrupá-los usando

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

até que toda a categoria esteja preenchida. Depois disso, escolha o filtro em dados. Isso permitirá que você os classifique por faixa etária ou sexo. (por exemplo, se você quiser classificar por sexo):

  1. clique na seta para baixo, além do cabeçalho de sexo
  2. selecione apenas masculino ou feminino
  3. clique na seta para baixo, além do título de tempo (suponho que você terá tempo para decidir o vencedor)
  4. Classifique de A a Z, pois ele mostrará o menor para o maior e o vencedor do prêmio será o menor tempo

Faça o mesmo para outra categoria e você pode encontrar seus vencedores de prêmios.

Felicidades

    
por 20.05.2015 / 04:59