PowerApps の Sort および SortByColumns 関数Sort and SortByColumns functions in PowerApps

テーブルを並べ替えます。Sorts a table.

説明Description

Sort 関数は、数式に基づいてテーブルを並べ替えます。The Sort function sorts a table based on a formula.

数式は、それぞれのテーブルのレコードに対して評価され、結果はテーブルの並べ替えに使用されます。The formula is evaluated for each record of the table, and the results are used to sort the table. 数式の結果は、数値、文字列、またはブール値になる必要があります。結果がテーブルまたはレコードになることはできません。The formula must result in a number, a string, or a Boolean value; it can't result in a table or a record.

Fields of the record currently being processed are available within the formula. You simply reference them by name as you would any other value. You can also reference control properties and other values from throughout your app. For more details, see the examples below and working with record scope.

まず 1 つの列で並べ替えてから、別の列で並べ替えるには、Sort 式を別の Sort 式に埋め込みます。To sort first by one column and then by another, you embed a Sort formula within another. たとえば、次の数式を使用して最初に Contacts テーブルを LastName 列で並べ替えてから、FirstName 列で並べ替えることができます: Sort( Sort( Contacts, LastName ), FirstName )For example, you can use this formula to sort a Contacts table first by a LastName column and then by a FirstName column: Sort( Sort( Contacts, LastName ), FirstName )

SortByColumns 関数は、1 つまたは複数の列に基づいてテーブルを並べ替える場合にも使用できます。The SortByColumns function can also be used to sort a table based on one or more columns.

SortByColumns のパラメーター リストでは、並べ替える列の名前と、各列の並べ替えの方向を指定します。The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. 並べ替えは、パラメーターの順序で実行されます (最初の列が最初に並べ替えられ、次に 2 番目の列が並べ替えられるという順序です)。Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). 列名は、文字列として指定し、パラメーター リストに直接指定する場合は、二重引用符で囲む必要があります。Column names are specified as strings, requiring double quotes if directly included in the parameter list. たとえば、SortByColumns( CustomerTable, "LastName" ) となります。For example, SortByColumns( CustomerTable, "LastName" ).

SortByColumnsドロップ ダウン コントロールまたはリスト ボックス コントロールを組み合わせると、並べ替える列を選択できます。You can combine SortByColumns with a Drop down or List box control to enable users to select which column to sort by.

SortByColumns では、昇順または降順で並べ替えるだけでなく、値を含んだ単一列テーブルに基づいて並べ替えることができます。In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. たとえば、["Monday","Tuesday"、"Wednesday"、"Thursday"、"Friday"、"Saturday"、"Sunday"] を並べ替え順序として指定すると、曜日の名前に基づいてレコードを並べ替えることができます。For example, you can sort record based on the name of a day of the week by supplying [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] as the sort order. Monday" が含まれるレコードが先頭に表示され、続いて Tuesday の順序で表示されます。All records which have Monday" will come first, followed by Tuesday, and so on. 並べ替えテーブルに表示されないレコードは、リストの末尾に表示されます。Records found that do not appear in the sort table are put at the end of the list.

文字列または数値と同じように、テーブルは PowerApps 内の値です。Tables are a value in PowerApps, just like a string or number. 関数に渡して、関数から返すことができます。They can be passed to and returned from functions. SortSortByColumn はテーブルを変更しません。代わりに、テーブルを引数として受け取り、並べ替えた新しいテーブルを返します。Sort and SortByColumn don't modify a table; instead they take a table as an argument and return a new table that has been sorted. 詳細については、テーブルの使用に関するページを参照してください。See working with tables for more details.

Delegation

When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. For example, when you start an app that shows a Gallery control filled with data, only the first set of records will be initially brought to the device. As the user scrolls, additional data is brought down from the data source. The result is a faster start time for the app and access to very large data sets.

However, delegation may not always be possible. Data sources vary on what functions and operators they support with delegation. If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. When possible, consider changing the formula to avoid functions and operators that can't be delegated. The delegation list details which data sources and operations can be delegated.

If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Filter and sort functions will operate on a reduced set of records. What is available in the Gallery may not be the complete story, which could be confusing to users.

See the delegation overview for more information.

構文Syntax

Sort( Table, Formula [, SortOrder ] )Sort( Table, Formula [, SortOrder ] )

  • Table - 必須。Table - Required. 並べ替えるテーブル。Table to sort.
  • Formula - 必須。Formula - Required. この数式は、それぞれのテーブルのレコードに対して評価され、結果はテーブルの並べ替えに使用されます。This formula is evaluated for each record of the table, and the results are used to sort the table. テーブル内の列を参照することができます。You can reference columns within the table.
  • SortOrder - 省略可能。SortOrder - Optional. SortOrder.Descending を指定すると、降順でテーブルを並べ替えます。Specify SortOrder.Descending to sort the table in descending order. SortOrder.Ascending が既定値です。SortOrder.Ascending is the default value.

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

  • Table - 必須。Table - Required. 並べ替えるテーブル。Table to sort.
  • ColumnName(s) - 必須。ColumnName(s) - Required. 文字列として、並べ替える列名。The column names to sort on, as strings.
  • SortOrder(s) - 省略可能。SortOrder(s) - Optional. SortOrder.Ascending または SortOrder.DescendingSortOrder.Ascending or SortOrder.Descending. SortOrder.Ascending が既定です。SortOrder.Ascending is the default. 複数の ColumnNames が指定されている場合は、最後の列以外に、SortOrder を含める必要があります。If multiple ColumnNames are supplied, all but the last column must include a SortOrder.

    注: 名前にスペースが使われている列を含む SharePoint および Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". たとえば、"Column Name" として "Column_x0020_Name" を指定します。For example, specify "Column Name" as "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - 必須。Table - Required. 並べ替えるテーブル。Table to sort.
  • ColumnName(s) - 必須。ColumnName - Required. 文字列として、並べ替える列名。The column name to sort on, as strings.
  • SortOrderTable - 必須。SortOrderTable - Required. 並べ替えの対象となる、値を含んだ単一列テーブル。Single column table of values to sort by.

    注: 名前にスペースが使われている列を含む SharePoint および Excel のデータ ソースの場合、各スペースを "_x0020_" として指定します。Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". たとえば、"Column Name" として "Column_x0020_Name" を指定します。For example, specify "Column Name" as "Column_x0020_Name".

Examples

以下の例では、次のテーブルにデータが含まれている IceCream データ ソースを使用します。For the following examples, we'll use the IceCream data source, which contains the data in this table:

数式Formula 説明Description 結果Result
Sort( IceCream, Flavor )Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )SortByColumns( IceCream, "Flavor" )
IceCreamFlavor 列で並べ替えます。Sorts IceCream by its Flavor column. Flavor 列に文字列が含まれているため、テーブルはアルファベット順に並べ替えられます。The Flavor column contains strings, so the table is sorted alphabetically. 既定では、並べ替え順序は昇順です。By default, the sort order is ascending.
Sort( IceCream, Quantity )Sort( IceCream, Quantity )

SortByColumns( IceCream, "Flavor" )SortByColumns( IceCream, "Quantity" )
IceCreamQuantity 列で並べ替えます。Sorts IceCream by its Quantity column. Quantity 列に数値が含まれているため、テーブルは数値の順で並べ替えられます。The Quantity column contains numbers, so the table is sorted numerically. 既定では、並べ替え順序は昇順です。By default, the sort order is ascending.
Sort( IceCream, Quantity, SortOrder.Descending )Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )SortByColumns( IceCream, "Quantity", SortOrder.Descending )
IceCreamQuantity 列で並べ替えます。Sorts IceCream by its Quantity column. Quantity 列に数値が含まれているため、数値の順で並べ替えられます。The Quantity column contains numbers, so the sort is done numerically. 並べ替え順序は、降順に指定されています。The sort order has been specified as descending.
Sort( IceCream, Quantity + OnOrder )Sort( IceCream, Quantity + OnOrder ) IceCream を、各レコードの Quantity 列と OnOrder 列の合計で並べ替えます。Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. 合計が数値であるため、テーブルは数値の順に並べ替えられます。The sum is a number, so the table is sorted numerically. 既定では、並べ替え順序は昇順です。By default, the sort order is ascending. 列のそのままの値ではなく、数式によって並べ替えるため、SortByColumns を使って同じことはできません。Since we are sorting by a formula and not by raw column values, there is no equivalent using SortByColumns.
Sort( Sort( IceCream, OnOrder ), Quantity )Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
IceCream を最初に OnOrder 列で並べ替えてから、次に Quantity 列で並べ替えます。Sorts IceCream first by its OnOrder column, and then by its Quantity column. 最初の並べ替えで OnOrder に基づいて "Pistachio" が "Vanilla" の上に移動し、次に Quantity に基づいて、共に適切な位置に移動します。Note that "Pistachio" rose above "Vanilla" in the first sort based on OnOrder, and then together they moved to their appropriate place based on Quantity.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] )SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) "Pistachio" と "Strawberry" を含んだ単一列テーブルに基づいて IceCreamFlavor 列で並べ替えます。Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". Flavor 列に "Pistachio" があるレコードが結果の先頭に表示され、次に "Strawberry" を含むレコードが表示されます。Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". "Vanilla" のように Flavor 列の値が一致しない場合は、その値は一致した項目の後に表示されます。For values in the Flavor column that are not matched, such as "Vanilla", they will appear after the items that were matched.

ステップ バイ ステップStep by step

これらの例を実行するには、次のように IceCream データ ソースをコレクションとして作成します。To run these examples yourself, create the IceCream data source as a collection:

  1. ボタンを追加し、OnSelect プロパティを次の数式に設定します。Add a button, and set its OnSelect property to this formula:
    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 } )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 キーを押して既定のワークスペースに戻ります。Preview the app, select the button, and then press Esc to return to the default workspace.
  3. [ファイル] メニューの [コレクション] を選択して、作成したコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

並べ替えSort

  1. もう 1 つボタンを追加し、OnSelect プロパティを次の数式に設定します。Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) ) ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    上の数式では、IceCream と同じデータを含む、SortByFlavor という名前の 2 つ目のコレクションを作成します。The previous formula creates a second collection, named SortByFlavor, that contains the same data as Ice Cream. ただし、新しいコレクションに含まれるデータは、Flavor 列でアルファベットの昇順に並べ替えられます。However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. F5 キーを押して、新しいボタンを選択し、Esc キーを押します。Press F5, select the new button, and then press Esc.
  3. [ファイル] メニューの [コレクション] を選択して両方のコレクションを表示し、Esc キーを押して既定のワークスペースに戻ります。Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  4. 最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、Sort 式を、前にこのセクションで示した Sort の使用例の表にある別の式で置き換えます。Repeat the last three steps, but change the name of the collection that you want to create, and replace the Sort formula with a different formula from the table of examples earlier in this section that uses Sort.

SortByColumnsSortByColumns

  1. もう 1 つボタンを追加し、OnSelect プロパティを次の数式に設定します。Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) ) ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    上の数式では、IceCream と同じデータを含む、SortByQuantity という名前の 3 つ目のコレクションを作成します。The previous formula creates a third collection, named SortByQuantity, that contains the same data as Ice Cream. ただし、新しいコレクションに含まれるデータは、Quanity 列で数値の昇順で並べ替えられてから、Flavor 列で降順に並べ替えられます。However, the new collection contains the data sorted numerically by the Quanity column in ascending order, and then by the Flavor column in descending order.

  2. F5 キーを押して、新しいボタンを選択し、Esc キーを押します。Press F5, select the new button, and then press Esc.
  3. [ファイル] メニューの [コレクション] を選択して 3 つのコレクションをすべて表示し、Esc キーを押して既定のワークスペースに戻ります。Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  4. 最後の 3 つの手順を繰り返しますが、作成するコレクションの名前を変更し、SortByColumns 式を、前にこのセクションで示した SortByColumns の使用例の表にある別の式で置き換えます。Repeat the last three steps, but change the name of the collection that you want to create, and replace the SortByColumns formula with a different formula from the table of examples earlier in this section that uses SortByColumns.