Excel: 年齢と性別別に上位 3 人の「勝者」を表示するにはどうすればよいでしょうか?

Excel: 年齢と性別別に上位 3 人の「勝者」を表示するにはどうすればよいでしょうか?

Excel を使用してマラソンのデータを管理したいと思います。マラソンでは、優勝者を と でグループagegendercategory、各 の 1 位から 3 位に賞品を授与します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 の値を比較し、競技者が上位 4 位以内に入った場合は行の内容を転送します。

'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

はい。説明されているのはピボット テーブルです。ソース データ タブのセルをクリックし、ピボット テーブルを挿入して [OK] をクリックします。デフォルトでは、新しいシートに作成されます。年齢グループ、性別、名前を行領域にドラッグし、順位を値領域にドラッグします。

ピボット内の名前のいずれかを右クリックし、[フィルター] > [上位 10 件] を使用します。上位ランクが 1 であると仮定して、「上位」を「下位」に、10 を 3 に変更すると、次のような結果になります。

ここに画像の説明を入力してください

ピボット テーブルを Excel テーブル ([挿入] > [テーブル] で作成) に基づいて作成する場合は、ソース テーブルにデータを追加し、ピボット テーブルを更新すると ([ピボット ツール] リボンで)、現在の結果が表示されます。

ファイルのコピーはここ

答え3

年齢カテゴリーについては、次のようにグループ化することができます。

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

すべてのカテゴリが埋まるまで続けます。その後、データの下のフィルターを選択します。これにより、年齢層または性別で並べ替えることができます。(例: 性別で並べ替えたい場合):

  1. 性別の見出しの横にある下矢印をクリックします
  2. 男性のみまたは女性のみを選択
  3. タイミングの見出しの横にある下矢印をクリックします(勝者を決めるためのタイミングの見出しがあると思います)
  4. AからZの順に並べ替えると、最小から最大まで表示され、受賞者は最も小さいタイミングになります。

他のカテゴリーでも同じ操作を行うと、受賞者を見つけることができます。

乾杯

関連情報