Excel:如何以年齡和性別顯示前 3 位「得獎者」?

Excel:如何以年齡和性別顯示前 3 位「得獎者」?

我想使用 Excel 來管理馬拉鬆比賽的數據。馬拉鬆比賽將優勝者分為agegendercategory,並頒發第一名至第三名的獎項category

Excel 是否可以透過在單一工作表上輸入資料並自動計算結果並以某種方式顯示在另一個工作表上來動態確定獲勝者?

我有一個工作表,其中每行包含以下資料:

name, age, gender, age category, overall rank

我對基於 VBA 和 Excel 函數的方法持開放態度。謝謝!

答案1

如果您想在修改 worksheet1 中的資料時更新 worksheet2,您可以使用 VBA 建立動態更新的結果頁面。

  • 在開發人員標籤中點選 Visual Basic。
  • 展開 Microsoft Excel Objects 資料夾並查看 Sheet1 的程式碼
  • 建立一個新函數,名為:

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

每當 worksheet1 中的資料被修改時,就會呼叫此函數。

若要根據排名列更新資料並做出以下假設:
資料位於這些列中 名稱: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 名”。此類似的結果:

在此輸入影像描述

如果資料透視表基於Excel 表(已使用「插入」>「表」建立),則可以將資料新增至來源表,重新整理資料透視表(在「資料透視工具」功能區上),然後將顯示目前結果。

該文件的副本是這裡

答案3

對於年齡類別,您可以嘗試使用將它們分組在一起

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

直到所有類別都被填滿。之後選擇資料下的過濾器。這將使您能夠按年齡組或性別對它們進行排序。 (例如,如果您想按性別排序):

  1. 按一下性別標題旁的向下箭頭
  2. 僅選擇男性或僅選擇女性
  3. 點擊計時標題旁邊的向下箭頭(我假設您將通過計時標題來決定獲勝者)
  4. 從 A 到 Z 排序,因為它將顯示最小到最大,獲獎者將是最小的時間

對其他類別進行相同的操作,您就可以找到獲獎者。

乾杯

相關內容