あなたの会社が福利厚生の自動車ショーを後援し、あなたがスコアを追跡し、勝者を考え出す責任があると仮定します。

ワークシートの各列は車の異なるカテゴリを表し、各行はコンテストの異なる参加者を表します。表の各セルには、適切なカテゴリのその競技者のスコアが含まれています。スコアを追跡した後のあなたの仕事は、各カテゴリの上位3つの勝者(1位、2位、3位)を計算することです。

各カテゴリに各人の一意のスコアが含まれる場合(同点はありません)、各カテゴリの上位3つのスコアを計算するのは比較的簡単です。ワークシートの最初の3行が、各カテゴリの上位3つの勝者を表示するために使用されていると仮定します。セルA1には1(1位)、セルA2には2(2位)、セルA3には3(どの場所かがわかる)が含まれています。

実際のスコアリングテーブルは、セルA5で始まり、列ラベルが付いています。セルA5には「名前」という単語が含まれ、セルB5:AA5には各車のカテゴリの名前が含まれます。セルA6:A100には各出場者の名前が含まれ、B6:AA100にはそれらの出場者のカテゴリ別のスコアが含まれます。

セルB1に次の数式を入力します:

=INDEX($A$6:$A$100,MATCH(LARGE(B$6:B$100,$A1),B$6:B$100,0))

数式を残りの結果範囲B1:AA3にコピーします。数式は、列A(1から3)のランキングを調べ、それを使用して、各列の1番目、2番目、および3番目に大きい値を選択します。ただし、値を返すのではなく、値を使用して、その値を持つ人の名前を選択します。返されるのはこの名前です。

前述のように、このアプローチは、スコアリングテーブルに同点がないことを前提としています。同点になる可能性がある場合、スコアリングははるかに複雑になり、おそらく、マクロでユーザー定義関数を作成するのが最善の解決策です。 (同点がより困難になる理由は、裁判官が同点を破るための一連の規則を考え出す必要があるためです。これらの規則は異なる可能性があります。つまり、数式とユーザー定義関数が異なる可能性があります。)

もう1つの提案は、スコアリングテーブルを維持する方法を変更することです。大きなマトリックス(26列、ただし多くの出場者がいる)を作成する代わりに、名前、カテゴリ、スコアの3つの列のみを持つ小さなデータベースを作成します。次に、各人のデータをデータベースに入力し、データベースを並べ替えて、希望する勝者を取得します。最初にカテゴリで並べ替え、次にスコアで並べ替えるだけで、各カテゴリの上位3人の出場者を簡単に確認できます。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3041)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Determining_Winners_by_Category [Determining Winners、byCategory]