Excel: Wie werden die drei besten „Gewinner“ nach Alter und Geschlecht angezeigt?

Excel: Wie werden die drei besten „Gewinner“ nach Alter und Geschlecht angezeigt?

Ich möchte Excel verwenden, um die Daten für einen Marathon zu verwalten. Der Marathon gruppiert die Gewinner nach ageund genderin einem categoryund vergibt Preise für den ersten bis dritten Platz in jedem category.

Können die Gewinner mithilfe von Excel dynamisch ermittelt werden, indem die Daten in ein einzelnes Arbeitsblatt eingegeben werden und die Ergebnisse automatisch berechnet und auf irgendeine Weise in einem anderen Arbeitsblatt angezeigt werden?

Ich habe ein einzelnes Arbeitsblatt, das für jede Zeile die folgenden Daten enthält:

name, age, gender, age category, overall rank

Ich bin offen für VBA- und Excel-funktionsbasierte Ansätze. Danke!

Antwort1

Wenn Sie Arbeitsblatt2 aktualisieren möchten, wenn die Daten in Arbeitsblatt1 geändert werden, können Sie VBA verwenden, um eine resultierende Seite zu erstellen, die dynamisch aktualisiert wird.

  • Klicken Sie auf der Registerkarte „Entwickler“ auf Visual Basic.
  • Erweitern Sie den Ordner Microsoft Excel-Objekte und zeigen Sie den Code für Sheet1 an.
  • Erstellen Sie eine neue Funktion mit dem Namen:

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

Diese Funktion wird immer aufgerufen, wenn die Daten im Arbeitsblatt1 geändert werden.

So aktualisieren Sie die Daten anhand der Spalte „Rankings“ und treffen folgende Annahmen:
Die Daten befinden sich in diesen Spalten: Name: Spalte A, Alter: Spalte B, Geschlecht: Spalte C, Kategorie: Spalte D, Gesamtrang: Spalte E.

Vergleichen Sie im Unterelement „Worksheet_Change“ die Werte in Spalte E, der Spalte „Ranking“, und übertragen Sie den Zeileninhalt, wenn der Teilnehmer unter den ersten vier Plätzen gelandet ist.

'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

Fügen Sie hier bei Bedarf einen Sortieralgorithmus ein, nachdem die Daten migriert wurden.

Wenn Sie weitere Einzelheiten oder Hilfe beim Sortieren benötigen, lassen Sie es mich bitte wissen.

Antwort2

Ja. Was Sie beschreiben, ist eine Pivot-Tabelle. Klicken Sie auf eine Zelle in Ihrer Quelldatentabelle, fügen Sie eine Pivot-Tabelle ein und klicken Sie auf „OK“. Standardmäßig wird sie in einem neuen Blatt erstellt. Ziehen Sie Altersgruppe, Geschlecht und Name in den Zeilenbereich und Rang in den Wertebereich.

Klicken Sie mit der rechten Maustaste auf einen beliebigen Namen in der Pivot-Tabelle und verwenden Sie „Filter“ > „Top 10“. Angenommen, der oberste Rang ist 1. Ändern Sie „Top“ in „Bottom“ und 10 in 3. Das Ergebnis sieht ungefähr so ​​aus:

Bildbeschreibung hier eingeben

Wenn die Pivot-Tabelle auf einer Excel-Tabelle basiert (die mit „Einfügen“ > „Tabelle“ erstellt wurde), können Sie der Quelltabelle Daten hinzufügen, die Pivot-Tabelle aktualisieren (auf der Multifunktionsleiste „Pivot-Tools“) und die aktuellen Ergebnisse werden angezeigt.

Eine Kopie der Datei istHier.

Antwort3

für die Alterskategorie können Sie versuchen, sie zu gruppieren mit

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

bis alle Kategorien ausgefüllt sind. Wählen Sie anschließend unter Daten den Filter aus. Dadurch können Sie sie nach Altersgruppe oder Geschlecht sortieren. (z. B. wenn Sie nach Geschlecht sortieren möchten):

  1. Klicken Sie auf den Abwärtspfeil neben der Überschrift „Geschlecht“
  2. Wählen Sie nur männlich oder nur weiblich
  3. Klicken Sie auf den Abwärtspfeil neben der Zeitüberschrift (ich gehe davon aus, dass Sie die Zeitüberschrift haben, um den Gewinner zu bestimmen).
  4. Sortieren Sie von A bis Z, da die Sortierung vom Kleinsten bis zum Größten erfolgt und der Preisträger das kleinste Timing ist

Machen Sie dasselbe für andere Kategorien und Sie können Ihre Preisträger finden.

Prost

verwandte Informationen