技術情報ブログ
Power Platform
2021.10.06

Power Appsでデータの順位を求める方法(RANK()関数と同等機能の実装方法)

Power Appsでデータの順位を求める方法(RANK()関数と同等機能の実装方法)
小刀稱知哉

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

Power Apps には Excel の RANK()関数が用意されていません(記事執筆時点)。そのため、CountRows()Filter() を組み合わせて「自分より得点が高いレコード数+1」を順位として計算します。

本記事では、学生と得点のコレクションを用意し、AddColumns() で「順位」列を追加して RANK()相当のランキング表示を実装します。さらに、同点時に比較演算子へ イコール(>=)を足してはいけない理由も解説します。

今回は、Power Appsでデータの順位を求める方法についてご紹介します。

Excelでは、標準で提供されているRANK()関数を用いれば、データの順位を求めることができます。

しかし、「Power AppsではRANK()関数をサポートしていません。(2021年9月現在)」

よって、Power Appsでデータの順位を求めるためには、関数を組み合わせ、RANK()関数と同等の機能を実装する必要があります。

この記事の式は、そのままでも使えますが、実データ(SharePoint / Dataverse)に当てはめると「委譲」「データ量」「同点時の仕様」などで設計が分かれます。

Power Apps / Power Automate の内製化や設計レビューが必要な場合は、状況を整理した上で実装方針をご提案できます。

ExcelのRANK()関数について

Excelでデータの順位を求める場合、RANK()関数を用いることで対応可能です。

例を以下に示します。

得点が最も高い学生の順位は1、次に得点が高い学生の順位が2…となっています。
また、同点の場合は、同じ順位(以下例では、2位が2人存在)となります。

RANK()関数の詳細は以下を参考にしてください。

RANK 関数

ExcelのRANK()関数

Power AppsでRANK()関数を実装する

冒頭でもお伝えした通り、「Power Appsでは現時点でRANK()関数はサポートされていません。」
そこで、Power Apps内の関数を組み合わせることで、RANK()関数と同等の機能を実装していきます。

では早速、実装の流れを紹介していきます。

(1)学生と得点を格納するコレクション(colPoints)を作成

学生と得点を格納するコレクションを作成します。

ボタンを準備し、「OnSelect」プロパティに以下の関数を記載します。

ClearCollect(colPoints, 
   {学生: "A", 得点: 100}
   , {学生: "B", 得点: 87}
   , {学生: "C", 得点: 67}
   , {学生: "D", 得点: 87}
   , {学生: "E", 得点: 45}
)
colPoints

(2)colPointsの得点列を基準として、順位付を行うためのコレクション(colPointsAndOrder)を作成

本記事のメインであるRANK()関数を実装していきます。

いきなりですが、完成形を記載します。

ClearCollect(colPointsAndOrder,
    AddColumns(colPoints As tmpThisRecord, "順位", CountRows(Filter(colPoints, 得点 > tmpThisRecord.得点)) + 1)
);
colPointsAndOrder

実装のキーポイントとしては、CountRows(Filter(colPoints, 得点 > tmpThisRecord.得点)) + 1の部分です。

考え方を説明していきます。

  • 「tmpThisRecord.得点」はcolPointsの得点列の各値を示します。(下図(1))

  • Filter()関数では、「tmpThisRecord.得点」より大きい得点を持つレコードを抽出します。
    また、CountRows()関数では、Filter()関数で得たレコード数(=0から始まる順位)を返します。
    最後に、CountRows()関数の結果に1を加算することで、1から始まる順位を得ることができます。(下図(2))

考え方

ちなみに、CountRows()関数の結果に1を加算せず、Filter()関数内の比較演算子を「以上(>=)」にすれば良いのでは? と思った方がいらっしゃるかもしれませんが、これは間違いです。

Filter()関数内の比較演算子にイコールを追加してはいけません。

なぜかというと、同点の場合、同順位の最大値が格納されてしまうためです。

通常は、同順位の最小値を求める必要があるので、イコールを追加しないようにしてください。

イコールを追加した場合

本記事では、Power AppsでRANK()関数と同等の機能を実装する方法について紹介しました。

関数を組み合わせて新しい関数を作成する場合、実装のアイデアが必要となります。
(実は、本アイデアは社内のPower Platformでのソリューション提案や実装の経験が豊富な方に教えていただきました(笑))

このような内容は、「知っていれば一瞬」ですが「知らなければ多くの時間が必要」となります。

当社では、今回のような実装のアイデアを多く発信していく予定ですので、是非今後ともご覧ください。

最後まで読んでいただき、ありがとうございました!

順位付けは実装できても、実案件では「データ構造」「性能」「同点の扱い」「画面設計」まで含めて最適化が必要になることが多いです。

Power Platform の導入・開発・内製化支援として、要件整理〜実装までの進め方をご相談いただけます。

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

🖊小刀稱知哉さんのブログ一覧はこちら

大分県出身(温泉大好き)、現在は茨城県在住

1990年生まれ

30才でメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書(最近書道を始めました)

主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!

(最近はCopilot Studioについても勉強中)

Microsoft MVPを受賞させていただきました!

持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200/SC-100

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2026.03.03

Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?

2026.03.03

Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない

2026.02.25

Dataverse:Dataverse入門(3)!リレーションでデータを構造化する-テーブル間の連携とは?

2026.02.18

Dataverse入門(2)!テーブルに列を追加してみる-列の型の決め方

2026.02.11

Dataverse入門(1)!注文管理アプリを作ってみる-Dataverseテーブルの作り方

データ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キーモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップform差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Power AppsTypeScriptitem関数入門技術エクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計Power PlatformHTMLGoogle Maps初心者Itインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキーSharePointEF CoreMarker Clusterer中級者DXカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約ExcelマイグレーションRANK()関数キャンバスアプリノウハウcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムMicrosoft DataversePower AutomateFramework CoreDynamics 365 SalesDatePicker情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いフォーム設定C#Attribute directivesMicrosoft TranslatorDropdownメッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入ビュー設定attributeO/Rマッパーマーカークラスタリングライブラリviewメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較Power Apps モデル駆動型validationazure sql databasetailwindcssビューfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とは注文管理アプリローコードCase式マルチテナントアクセス制限nest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築サイトマップAngularHTTP Requestドロップダウンメニューノーコード入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate KeyサブグリッドAccessCSSBreakpointObserver承認動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キー業務アプリ開発InfoPathxUnitメディアクエリリマインドcollectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェックDataverse テーブルMatTable.Net Core 3.1スマホSetコレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDAngular MaterialVSCodePCForAll複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キー
PageTop
ページトップに戻る