Power Apps の Sort および SortByColumns 関数

テーブル を並べ替えます。

内容

Sort 関数は、数式に基づいてテーブルを並べ替えます。

数式は、それぞれのテーブルのレコード に対して評価され、結果はテーブルの並べ替えに使用されます。 数式の結果は、数値、文字列、またはブール値になる必要があります。結果がテーブルまたはレコードになることはできません。

現在処理されているレコードのフィールドは、この数式内で使用できます。 ThisRecord 演算子を使用するか、他の値を参照するのと同様に名前でフィールドを参照します。 As 演算子を使用して処理対象のレコードを指定することもできます。そうすると数式がわかりやすくなり、入れ子になったレコードにアクセスしやすくなります。 詳細については、以下の例と「レコードのスコープに関する作業」を参照してください。

まず 1 つの列で並べ替えてから、別の列で並べ替えるには、Sort 式を別の Sort 式に埋め込みます。 たとえば、次の計算式を使用して最初に Contacts テーブルを LastName 列で並べ替えてから、FirstName 列で並べ替えることができます: Sort( Sort( Contacts, LastName ), FirstName )

SortByColumns 関数は、1 つまたは複数の列に基づいてテーブルを並べ替える場合にも使用できます。

SortByColumns のパラメーター リストでは、並べ替える列の名前と、各列の並べ替えの方向を指定します。 並べ替えは、パラメーターの順序で実行されます (最初の列が最初に並べ替えられ、次に 2 番目の列が並べ替えられるという順序)。 列名は、文字列として指定し、パラメーター リストに直接指定する場合は、二重引用符で囲む必要があります。 たとえば、SortByColumns( CustomerTable, "LastName" ) となります。

SortByColumnsDrop down コントロールまたは List box コントロールを組み合わせると、並べ替える列を選択できます。

SortByColumns では、昇順または降順で並べ替えるだけでなく、値を含んだ単一列テーブルに基づいて並べ替えることができます。 たとえば、["Monday","Tuesday"、"Wednesday"、"Thursday"、"Friday"、"Saturday"、"Sunday"] を並べ替え順序として指定すると、曜日の名前に基づいてレコードを並べ替えることができます。 Monday" が含まれるレコードが先頭に表示され、続いて Tuesday の順序で表示されます。 並べ替えテーブルに表示されないレコードは、リストの末尾に表示されます。

テーブル は、文字列や数値と同じように、Power Apps 内での値です。 関数に渡して、関数から返すことができます。 SortSortByColumn はテーブルを変更しません。代わりに、テーブルを引数として受け取り、並べ替えた新しいテーブルを返します。 詳細については、テーブルの使用 に関するページを参照してください。

委任

可能な場合、Power Apps はオンデマンドの結果を通じてフィルター操作と並べ替え操作をデータ ソースやページに委任します。 たとえば、データが入力された ギャラリー コントロールを表示するアプリを起動すると、最初はレコードの最初のセットのみがデバイスに表示されます。 ユーザーがスクロールすると、追加のデータがデータ ソースから引き出されます。 その結果、アプリの起動が高速になり、大規模なデータ セットにアクセスできます。

ただし、常に委任できるとは限りません。 データ ソースによって、委任がサポートされる関数や演算子が異なります。 数式を完全には委任できない場合、作成環境は委任できない部分を警告でフラグします。 可能であれば、委任できない関数や演算子を使用しないよう、数式を変更することを検討してください。 委任一覧は、委任できるデータ ソースや操作の詳細を示します。

委任できない場合、Power Apps はローカルで作業するために少量のレコードのセットのみを引き出します。 フィルター関数と並べ替え関数は、削減されたセットのレコードで機能します。 ギャラリー で入手できるものは完全なストーリーでない場合があり、ユーザーの混乱を招くことがあります。

詳しくは、「委任の概要」を参照してください。

構文

Sort( Table, Formula [, SortOrder ] )

  • Table - 必須。 並べ替えるテーブル。
  • Formula - 必須。 この数式は、それぞれのテーブルのレコードに対して評価され、結果はテーブルの並べ替えに使用されます。 テーブル内の列を参照することができます。
  • SortOrder - 省略可能。 SortOrder.Descending を指定して、降順でテーブルを並べ替えます。 SortOrder.Ascending が既定値です。

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table - 必須。 並べ替えるテーブル。

  • ColumnName(s) - 必須。 文字列として、並べ替える列名。

  • SortOrder(s) - 省略可能。 SortOrder.Ascending または SortOrder.DescendingSortOrder.Ascending が既定です。 複数の ColumnNames が指定されている場合は、最後の列以外に、SortOrder を含める必要があります。

    注意

    名前にスペースが使われている SharePoint と Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。 たとえば、"Column Name""Column_x0020_Name" として指定します。

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - 必須。 並べ替えるテーブル。

  • ColumnName - 必須。 文字列として、並べ替える列名。

  • SortOrderTable - 必須。 並べ替えの対象となる、値を含んだ単一列テーブル。

    注意

    名前にスペースが使われている SharePoint と Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。 たとえば、"Column Name""Column_x0020_Name" として指定します。

以下の例では、次のテーブルにデータが含まれている IceCream データソース を使用します。

IceCream の例。

内容 結果
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
IceCreamFlavor 列で並べ替えます。 Flavor 列に文字列が含まれているため、テーブルはアルファベット順に並べ替えられます。 既定では、並べ替え順序は昇順です。 アルファベット順に並べ替え済み。
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Flavor" )
IceCreamQuantity 列で並べ替えます。 Quantity 列に数値が含まれているため、テーブルは数値の順で並べ替えられます。 既定では、並べ替え順序は昇順です。 数値でソート済み。
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
IceCreamQuantity 列で並べ替えます。 Quantity 列に数値が含まれているため、数値の順で並べ替えられます。 並べ替え順序は、降順に指定されています。 数値で降順に並べ替え済み。
Sort( IceCream, Quantity + OnOrder ) IceCream を、各レコードの Quantity 列と OnOrder 列の合計で並べ替えます。 合計が数値であるため、テーブルは数値の順に並べ替えられます。 既定では、並べ替え順序は昇順です。 列のそのままの値ではなく、数式によって並べ替えるため、SortByColumns を使って同じことはできません。 数値で昇順に並べ替え済み。
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
まず IceCreamOnOrder 列で並べ替えてから、次に Quantity 列で並べ替えます。 最初の並べ替えで OnOrder に基づいて「Pistachio」が「Vanilla」の上に移動し、次に Quantity に基づいて、共に適切な位置に移動します。 Vanilla の後、Pistachio でソート済み。
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) 「Pistachio」と「Strawberry」を含んだ単一列テーブルに基づいて IceCreamFlavor 列で並べ替えます。 Flavor 列に「Pistachio」があるレコードが結果の先頭に表示され、次に「Strawberry」を含むレコードが表示されます。 「Vanilla」のように Flavor 列の値が一致しない場合は、その値は一致した項目の後に表示されます。 Strawberry の後、Pistachio でソート済み。

手順

これらの例を実行するには、IceCream データ ソースをコレクション として作成します。

  1. ボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )
  2. アプリをプレビューし、ボタンを選択してから、Esc キーを押して既定のワークスペースに戻ります。
  3. ファイル メニューの コレクション を選択して、作成したコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。

Sort

  1. もう 1 つボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    上の計算式では、IceCream と同じデータを含む、SortByFlavor という名前の 2 つ目のコレクションを作成します。 ただし、新しいコレクションに含まれるデータは、Flavor 列でアルファベットの昇順に並べ替えられます。

  2. F5 キーを押して、新しいボタンを選択し、Esc キーを押します。

  3. ファイル メニューの コレクション を選択して両方のコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。

  4. 最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、Sort 式を、前にこのセクションで示した Sort の使用例の表にある別の式で置き換えます。

SortByColumns

  1. もう 1 つボタンを追加し、OnSelect プロパティを次の計算式に設定します。
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    上の計算式では、IceCream と同じデータを含む、SortByQuantity という名前の 3 つ目のコレクションを作成します。 ただし、新しいコレクションに含まれるデータは、Quanity 列で数値の昇順で並べ替えられてから、Flavor 列で降順で並べ替えられます。

  2. F5 キーを押して、新しいボタンを選択し、Esc キーを押します。

  3. ファイル メニューの コレクション を選択して 3 つのコレクションをすべて表示し、Esc キーを押して既定のワークスペースに戻ります。

  4. 最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、SortByColumns 式を、前にこのセクションで示した SortByColumns の使用例の表にある別の式で置き換えます。

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。