小技集

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ



2024年12月23日【ID:0】

【Excel】重複を考慮した上位3件を抽出


以下の画像の左側の「氏名と点数をまとめた表」から、右側の「上位3件を抽出した表」を数式で作成する方法について解説していきます。

また、今回の方法では、重複した点数が存在する場合、同順位と判断して抽出する仕組みになっています。


重複を除いた上位3件の点数を抽出する

まずは、重複を除いた上位3件の点数を抽出していきます。
そのためには、以下の3つの関数を活用します。

・UNIQUE関数:重複を除外する
・SORT関数:点数を並べ替える
・TAKE関数:指定した件数のみを表から抽出する

それぞれの関数の使い方は、以下になります。

=UNIQUE(配列, [列の比較], [回数指定])
// 指定した配列から重複を除いた表を返す
// 配列:対象のデータの範囲
// [列の比較]:データが列方向の場合(TRUE)、行方向の場合(FALSE[省略時])
// [回数指定]:重複していないデータのみを抽出する場合(TRUE)、重複を除いた全件を抽出する場合(FALSE[省略時])
=SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準])
// 指定した配列を指定した順序に並べ替えた表を返す
// 配列:対象の表
// [並べ替えインデックス]:対象の表の中の、対象の列(行)の、表の先頭からの列(行)番号 ※省略時は先頭列(行)
// [並べ替え順序]:1→昇順、-1→降順 ※省略時は昇順
// [並べ替え基準]:TRUE→列で並べ替え、FALSE→行で並べ替え ※省略時は行で並べ替え
=TAKE(配列, 行数, [列数])
// 指定した配列から指定した行数(列数)を抽出する
// 配列:対象の表
// 行数:抽出する行数(正の数:上から抽出、負の数:下から抽出)
// [列数]:抽出する列数(正の数:上から抽出、負の数:下から抽出)
// ※[列数]は省略可能、省略時は全ての列を抽出

これらの関数を組み合わせた上位3件の点数を抽出する数式は、以下になります。

=TAKE(SORT(UNIQUE(C3:C12),,-1),3)
// UNIQUE関数で重複を除いてからSORT関数で降順にし、TAKE関数で上位3件を抽出する
ExcelVBAレベル確認

上位3件の点数と一致する氏名を抽出する

次に、上位3件の点数と一致する氏名を抽出していきます。
そのためには、以下の2つの関数を活用します。

・FILTER関数:指定した条件を満たすデータのみを抽出する
・TRANSPOSE関数:表を転置する(行と列を入れ替える)

それぞれの関数の使い方は、以下になります。

=FILTER(配列, 含む, [空の場合])
// 指定した配列から指定した条件を満たすデータのみを抽出する
// 配列:絞り込み対象の表
// 含む:絞り込み条件
// [空の場合]:条件を満たす対象のデータが見つからない時に表示する内容(省略時はエラーが表示される)
=TRANSPOSE(配列)
// 配列の行列を入れ替えた配列を返す
// 配列:転置対象の表

これらの関数を組み合わせた1位の氏名を抽出する数式は、以下になります。

=TRANSPOSE(FILTER($B$3:$B$12,$C$3:$C$12=F3))
// FILTER関数で指定した点数のデータを抽出してから、TRANSPOSE関数で横向きに転置する
// セルF3以外の参照範囲は固定のため「$」で絶対参照にする

後は、入力した数式を3位までコピーすることで、以下のように、氏名を抽出することができます。


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。


メンバー募集
ExcelVBA学習ロードマップ配布 ExcelVBA学習ロードマップ配布





リンクの共有はこちらから行えます。

  リンクコピー Twitter Facebook はてなブックマーク Pocket
トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

4460616

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ