技術情報ブログ
Power Platform
2021.10.06

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

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

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

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

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

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

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

 

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(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き♥♥)、現在は東京都在住

1990年4月9日生まれ

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

趣味は読書

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!

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

Power Apps・Power Automateの勉強方法(1)

2024.04.03

非エンジニア【(元)自治体職員】が半年間ローコード開発をしてみたら

2024.03.27

Power Automateのベストプラクティス・アンチパターン(5)【Apply to each×コンカレンシー×変数の設定はNG】

2024.03.20

Power Apps×Teams:Teams上からPower Appsを実行する方法

2024.03.13

Power Apps:SharePointリストと連携したカレンダーアプリを自作してみよう

モデル駆動型アプリPower AppsPower PlatformSharePointExcelPower AutomateC#attributevalidationローコードAngularAccessInfoPathMatTableAngular Materialデータ構造SortByColumns関数TypeScriptHTMLEF CoreマイグレーションFramework CoreAttribute directivesO/Rマッパーazure sql databaseCase式HTTP RequestCSSxUnit.Net Core 3.1VSCode.Net Core Test ExplorerDataverse for Teamsitem関数Google MapsMarker ClustererRANK()関数Dynamics 365 SalesMicrosoft TranslatorマーカークラスタリングライブラリtailwindcssマルチテナントドロップダウンメニューBreakpointObserverメディアクエリスマホPCレスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownviewビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術It情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layoutデータ行の制限引き継ぎ退職所有者を変更異動LoopMicrosoftdesignJSONデザインtemplateテンプレート運用選択肢列参照列ChatGPTOpenAIオープンAIチャットGPTgalleryギャラリースクロールコンテナショートカットキーshortcut keyconcat関数文字制限フロー実行開発環境環境本番環境ライセンス環境構築手順pipelineCI/CDパイプラインDevOpsMicrosoft 365簡易在庫管理時間外通知ファイルフィルター クエリドキュメント ライブラリfilter querysortソートmultiple item複数項目シェアポイント便利機能カレンダーCalendarTeamsローコード開発非エンジニア体験談勉強内製化
PageTop
ページトップに戻る