メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelで動的なトップ10またはnのリストを作成するにはどうすればよいですか?

Author Xiaoyang Last modified

多くのプロジェクトやビジネスプロセスでは、パフォーマンスや数値に基づいて個人、組織、製品、その他のエンティティをランク付けする必要があります。 「トップリスト」は、最も優れた成果を持つエントリを強調表示します。例として、成績優秀な学生、トップセールスマン、または収益が最も多い部門などが挙げられます。例えば、生徒の成績表があり、表彰、分析、または教育成果のモニタリングのために上位10名の得点者を動的に抽出したい場合があります(以下のスクリーンショットを参照)。 Excelで動的なトップ10またはトップNリストを作成することで、データが変更されるたびに結果が自動的に更新され、時間の節約と手動ランキングによるエラーの削減が可能になります。このガイドでは、数式、ピボットテーブル、VBAマクロなどを含むいくつかの実用的な解決策を紹介し、さまざまなデータ分析のニーズに効率的に対応できるように動的なトップ10またはnのリストを構築するのに役立てます。


Excelで動的なトップ10リストを作成する

Excel 2019およびそれ以前のバージョンでは、動的なトップ10(またはトップN)リストを作成するには、トップの値とそれに関連する名前やIDを同時に抽出するために数式を組み合わせる必要があります。この解決策は広く使用されており、データが変更されるとリストが自動的に更新されることを望む状況に適しています。次の操作手順では、クラシックなExcel数式を使用してこれを達成する方法を説明します。これらの数式は柔軟性があり、特別なExcelアドインを必要としませんが、セットアッププロセスは最近の動的配列関数と比較すると少し複雑です。

動的なトップ10リストを作成するための数式

1. 最初に、値範囲からトップ10の値を抽出する必要があります。空白セル(例えば、セルG2)に次の数式を入力します。数式を入力した後、フィルハンドルを下にドラッグして動的なトップ10の値リストを生成します。スクリーンショットをご覧ください:

=LARGE($B$2:$B$20,ROWS(B$2:B2))
: ここで、B2:B20はスコアまたは値の範囲であり、B2はその列の最初のセルです。データのサイズや場所に基づいてこれらのセル参照を調整してください。

apply a formula to extract the top10 values

2. 次に、これらのトップの値に関連する名前(またはID)を表示するには、次の数式をセルF2に入力します。これは配列数式であるため、入力後、Ctrl + Shift + Enterを押して確認します。この数式は、あなたが先ほど抽出したトップの値に対応する名前を見つけます:

=INDEX($A$2:$A$20,SMALL(IF($B$2:$B$20=G2,ROW($B$2:$B$20)-ROW($B$1)),COUNTIF($G$2:G2,G2)))
パラメータの説明:
- A2:A20 は、名前を取り出す範囲です;
- B2:B20 はスコアまたは値の範囲です;
- G2 は上記の数式からのトップ値です;
- B1 は値リストのヘッダーであり、ROW計算でのオフセットに使用されます。
この数式は、最高の値を名前と動的にリンクします。もし値範囲に重複がある場合、COUNTIFは各一致する名前が一度だけスコアと共に表示されるように保証します。

use a formula to get relative item

3. 最初の結果を抽出した後、セルF2の数式を選択し、フィルハンドルを下にドラッグして必要な行数に数式をコピーします。これにより、結果が拡張され、すべてのトップエントリーの名前がダイナミックに表示され、それに合致するスコアが表示されます。スクリーンショットをご覧ください:

drag and fill the formula to other cells

a screenshot of kutools for excel ai

Kutools AIでExcelの魔法を解き放つ

  • スマート実行: セル操作、データ分析、グラフ作成を簡単なコマンドで行います。
  • カスタム数式: ワークフローを合理化するための独自の数式を生成します。
  • VBAコーディング: 簡単にVBAコードを作成し実装します。
  • 数式の解釈: 複雑な数式を簡単に理解できます。
  • テキスト翻訳: スプレッドシート内の言語障壁を取り除きます。
AI搭載ツールでExcelの機能を強化しましょう。今すぐダウンロードして、かつてないほどの効率を体験してください!

条件付きで動的なトップ10リストを作成するための数式

一部の分析タスクでは、特定の基準を満たすエントリのみを表示するトップリストが必要になることがあります。たとえば、特定のグループ、チーム、またはカテゴリに限定されたトップ結果を求めたい場合があります。例えば、「クラス1」のみのトップ10のスコアを複数のクラスの成績を含む総合データシートから識別したい場合があります。このようなシナリオで数式を使用する方法は次の通りです:

create a dynamic top10 list with criteria

1. データセットから指定された基準(例:「クラス1」)を満たすトップ10の値を抽出することから始めます。目的のセル(例:J2)にこの数式を入力します:

=LARGE(IF($B$2:$B$25=$F$2,$C$2:$C$25),ROW(I2)-ROW(I$1))

2. 数式を入力した後、配列数式としてCtrl + Shift + Enterを押して確認し、次にフィルハンドルを下にドラッグして他のセルに数式を展開します。この数式は、選択した条件(例:すべての「クラス1」のスコア)に一致する上位10の値を返します。

apply a formula to extract the top10 values based on criteria

3. この条件に基づいてこれらのトップ値に対応する名前をリストするには、次の数式をセルI2にコピーして貼り付け、配列数式としてCtrl + Shift + Enterを押します。その後、必要に応じて全名前のリストを生成するために下方向に塗りつぶします。

=INDEX($A$2:$A$25,SMALL(IF(($C$2:$C$25=J2)*($B$2:$B$25=$F$2),ROW($C$2:$C$25)-ROW($C$1)),COUNTIF(J2:$J$2,J2)))

use a formula to create a dynamic top10 list in Office365

数式内の範囲を実際のデータ設定に合わせて調整してください。大規模なデータ範囲で配列数式を使用するとパフォーマンスが低下する可能性があることに注意してください。重複する値がトップ10に現れる場合、数式は適切に重複スコアを処理し、成績が等しい場合は複数の学生名を表示します。


Office 365で動的なトップ10リストを作成する

以前のバージョンのExcelでは、配列数式で複数の関数を組み合わせる必要がありましたが、Office 365(およびExcel 2021)では、INDEX、SORT、SEQUENCE、FILTERなどの動的配列関数が導入され、作業が大幅に簡素化されました。これらの関数により、動的なトップ10リストを簡単に作成でき、エラーを減らし、特に頻繁に増加または変更されるテーブルに便利です。常に更新されるデータ環境で作業している場合、これらの関数は分析を合理化し、迅速なビジネス意思決定を可能にします。

動的なトップ10リストを作成するための数式

Office 365を使用して動的なトップ10リストを抽出し表示するには、希望する出力セルに次の数式を入力します。必要なのは範囲と数字を自分のニーズに合わせることだけで、データが変更されるたびに数式が自動的に最新のトップ10の結果を表示します。

=INDEX(SORT(A2:B20,2,-1),SEQUENCE(10),{1,2})

Enterキーを押すだけで完了です。完全なトップ10リストが即座に表示され、追加データや修正されたスコアがランキングにすぐに反映されるよう動的状態を維持します。

use a formula to create a dynamic top10 list in Office365

ヒント:

SORT関数:

=SORT(array, [sort_index], [sort_order], [by_col])

  • array: ソートしたい範囲。
  • [sort_index]: ソートする列の番号。典型的な成績表の場合、通常は2列目です。
  • [sort_order]: 昇順の場合は1、降順の場合は-1を使用します。トップスコアを取得するには-1を使用します。
  • [by_col]: 列でソートするか(TRUE)、または行でソートするか(FALSEまたは省略)。

例: SORT(A2:B20,2,-1)は、A2:B20を2列目で降順にソートします。


SEQUENCE関数:

=SEQUENCE(rows, [columns], [start], [step])

  • rows: 返す行数、たとえばトップ10リストの場合は10。
  • [columns]: (オプション)返す列数。
  • [start]: (オプション)開始値。
  • [step]: (オプション)増分する値。

SEQUENCE(10)は1から10までの数字を生成し、INDEXがトップ10のソート済み結果を選ぶことを可能にします。

これらを組み合わせると、=INDEX(SORT(A2:B20,2,-1),SEQUENCE(10),{1,2})は動的な2列のトップ10リストを得ることができます。


条件付きで動的なトップ10リストを作成するための数式

「クラス1」などの特定のグループに対してトップ10を抽出する必要がある場合、これらの高度なOffice 365関数を使用して、基準を満たす行のみを含むトップNリストを作成できます。次の数式を目的の場所に配置し、必要に応じて範囲と基準セルを調整します:

=INDEX(SORT(FILTER(A2:C25,B2:B25=F2),3,-1),SEQUENCE(10),{1,3})

数式を入力したら、Enterキーを押すだけです。指定された基準に基づいてフィルタリングされ、ランク付けされたトップ10リストがすぐに表示され、データまたは基準を変更するたびに更新されます。

another formula to create a dynamic top10 list with criteria in office365

ヒント:

FILTER関数:

=FILTER(array, include, [if_empty])

  • array: フィルタリングするセル範囲。
  • include: 含める条件(例:特定のクラスに等しい)。
  • [if_empty]: (オプション)条件を満たす結果がない場合に表示する内容。

=FILTER(A2:C25,B2:B25=F2)は、列BがF2の値と一致する行のみを返します。


ピボットテーブルで動的なトップ10リストを作成する

ピボットテーブル:対話形式で自動的にトップNの結果を表示

動的なトップNリストを構築する別の方法は、Excelのピボットテーブル機能を使用することです。この方法は、大規模なデータセット、インタラクティブな分析(トップアイテムの数を迅速に変更したり、フィルタを適用したりする場合)、または複雑な数式を避けたい場合に特に適しています。ピボットテーブルは使いやすく、データが変更されると自動的に更新されるため、他のユーザーと共有するダッシュボードやレポートに最適です。

ピボットテーブルを使用して動的なトップNリストを作成するには:

  1. データテーブル内をクリックし、挿入 > ピボットテーブルに移動します。
  2. ピボットテーブルダイアログボックスで、ピボットテーブルを配置する場所を選んでOKをクリックします。
  3. 「名前」(または類似の識別子)フィールドをRowsエリアにドラッグします。
  4. 「スコア」(または値の列)をValuesエリアにドラッグします。通常、「合計」または「カウント」としてデフォルト設定されます—トップリストでは一般的に「合計」または「最大」を希望します。必要に応じて、右クリックしてSummarize Value Byを選択して値フィールドの計算を変更します。
  5. 「スコア」列を降順でソートするには、値を右クリックしてSort > Sort Largest to Smallestを選択します。
  6. トップNの結果に制限するには、Row Labelsのドロップダウン矢印をクリックし、Value Filters > Top 10... を選択して、数字(例:Top 10)とフィルタリングするフィールドを設定し、OKをクリックします。

これで、ピボットテーブルに動的なトップ10(または指定したN)が表示されます。トップNを変更するには、単にフィルター設定に戻ります。データが変更された場合は、ランキングを即座に更新するためにピボットテーブルをリフレッシュします。

このアプローチの利点には、簡単なセットアップ、簡単なソート、インタラクティブな調整が含まれます。ただし、ピボットテーブルは他の列からの対応する行を自動的に追加することはできません。詳細なユーザーは、グループ化、スライサーの作成、またはダッシュボードへのトップNフィルタの組み込みによってさらにレポートをカスタマイズすることができます。


VBAを使用して動的なトップ10リストを作成する

VBAマクロ:自動生成とトップNリストのリフレッシュ

VBAマクロの使用は、膨大なデータや頻繁に更新されるデータを扱うユーザーや、動的なトップNリストの抽出とリフレッシュを自動化する必要があるユーザーに非常に適しています。マクロは、反復作業を減らし、一貫性を確保する理想的なツールです。データをソートし、上位N行のみを特定の場所にコピーするルーチンを作成できます。

動的なトップNリストを作成するためにVBAマクロを使用するには、次の手順に従います:

  1. 開発 > Visual BasicをクリックしてVBAエディタを開きます。(開発タブが表示されない場合は、ファイル > オプション > リボンのユーザー設定に移動し、「開発」を有効にします。)
  2. VBAウィンドウで、挿入 > モジュールをクリックして新しいモジュールを追加します。
  3. 次のVBAコードをモジュールに貼り付けます:
Sub ExtractTopNList()
'Updated by Extendoffice 2025/7/24
    Dim DataRange As Range
    Dim OutputRange As Range
    Dim N As Integer
    Dim ws As Worksheet, tempWS As Worksheet
    Dim xTitleId As String
    Dim LastCol As Long
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set ws = ActiveSheet
    Set DataRange = Application.InputBox("Select the full data range to analyze (including headers)", xTitleId, ws.UsedRange.Address, Type:=8)
    Set OutputRange = Application.InputBox("Select the top-left cell of the output area", xTitleId, "", Type:=8)
    N = Application.InputBox("How many top items to extract? (Enter a positive integer)", xTitleId, 10, Type:=1)
    
    If DataRange Is Nothing Or OutputRange Is Nothing Or N < 1 Then Exit Sub
    
    ' Create a temporary worksheet to avoid sorting original data
    Set tempWS = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    DataRange.Copy tempWS.Range("A1")
    
    ' Determine last column for sorting key
    LastCol = DataRange.Columns.Count
    
    ' Sort in temporary sheet
    tempWS.UsedRange.Sort Key1:=tempWS.Cells(1, LastCol), Order1:=xlDescending, Header:=xlYes
    
    ' Copy headers and top N rows to output
    tempWS.Rows(1).Copy Destination:=OutputRange
    tempWS.Range("A2").Resize(N, LastCol).Copy Destination:=OutputRange.Offset(1, 0)
    
    ' Optional: Delete temporary sheet
    Application.DisplayAlerts = False
    tempWS.Delete
    Application.DisplayAlerts = True
    
    Application.CutCopyMode = False
End Sub

4. マクロを実行するには、データがヘッダーのあるテーブルに適切にレイアウトされていることを確認してください。 F5 を押すか、 Run button VBAエディタのボタンをクリックします。次の操作が求められます:

  1. データ範囲(正しいソートのためにヘッダーを含む)を選択します。
  2. 結果を貼り付ける出力セルを選択します。
  3. Nの数を入力します(例:トップ10の場合は10)。

マクロは、指定した位置に上位Nエントリー(ヘッダーを含む)をコピーします。

最初にテストするときは、ワークブックのバックアップまたはコピーでこれを使用することをお勧めします。エラーが発生した場合(間違った範囲を選択したなど)、再実行し、範囲とデータレイアウトが正しいことを確認してください。

このソリューションは、反復的なレポート作成タスクの自動化、ダッシュボードの作成、または手動の数式やソートなしでトップNレポートを迅速に更新するのに理想的です。また、より複雑なランキングロジック、特定の列によるソート、または結果を別のワークブックにエクスポートするなどのためにVBAスクリプトをさらにカスタマイズすることができます。

トラブルシューティング:マクロが期待どおりに動作しない場合、データテーブルに適切なヘッダーがあるかどうか確認し、データ型を修正してソートの問題を回避し、各プロンプトでセル参照が正確に選択されていることを確認してください。誤ったデータ変更を防ぐために、マクロを実行する前に必ず作業を保存してください。


まとめると、Excelは動的なトップNリストを生成して維持するためのさまざまな方法をサポートしています。伝統的な数式から強力なOffice 365関数、インタラクティブな分析のためのピボットテーブル、そして高度な自動化のためのVBAマクロまであります。ワークフローとデータ規模に最も適合する方法を選択してください。数式を使用するのはほとんどの手動分析に効果的です。Office 365関数は最もシンプルで強力であり、ピボットテーブルは迅速で柔軟な要約に最適です。VBAは特に大規模で反復的なランキングタスクの自動化に有用です。常に数式やコードの整合性を確認し、プロジェクトの進行に伴いデータ構造の変更に合わせてセル参照を適応させてください。


最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...


Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に

  • Word、Excel、PowerPointでタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得