排序資料表

說明

Sort 函式會根據公式排序資料表。

系統會針對資料表的記錄評估公式,並使用結果來排序資料表。 公式必須產生數字、字串或布林值,但不會產生資料表或記錄。

在公式內可使用目前處理之記錄的欄位。 您只要依名稱 (如同任何其他值) 來參考這些欄位。 您也可以參考整個應用程式中的控制項屬性和其他值。 如需詳細資訊,請參閱以下範例和處理記錄範圍

若要先依資料行排序,再依另一資料行排序,請在另一資料行中內嵌 Sort 公式。 例如,您可以使用此公式來排序 Contacts 資料表,方式為先依 LastName 資料行排序,再依 FirstName 資料行排序:Sort( Sort( Contacts, LastName ), FirstName )

SortByColumns 函式也可用於根據一或多個資料行排序資料表。

SortByColumns 的參數清單提供排序依據的資料行名稱,及各資料行的排序方向。 排序依參數順序執行 (先依第一個資料行排序,再依第二個資料行等)。 資料行名稱需指定為字串,如果直接包含在參數清單中,則需使用雙引號。 例如,SortByColumns( CustomerTable, "LastName" )

您可以將 SortByColumnsDrop downList box 控制項結合,讓使用者選取排序依據的資料行。

除了遞增或遞減排序外,亦可根據包含值的單資料行資料表來排序 SortByColumns。 例如,您可以將 [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] 作為排序順序,根據星期名稱來排序記錄。 所有含 Monday" 的記錄會排在第一個,接著為 Tuesday,依此類推。 排序資料表中沒有的記錄則會排在清單的尾端。

資料表是 PowerApps 中的值,如同字串或數字。 資料表可以傳遞至函式,也可以從函式傳回。 SortSortByColumn 不會修改資料表,而是將資料表作為引數,並傳回已排序的新資料表。 請參閱使用資料表以取得詳細資料。

委派

可能的話,PowerApps 會將篩選和排序作業委派給資料來源,並依照需求逐頁查看結果。 例如,當您啟動可顯示已填入資料之資源庫控制項的應用程式時,一開始只會將第一組記錄傳送到裝置。 當使用者進行捲動時,會從資料來源取得其他資料。 結果是應用程式的啟動時間更快,並可存取非常大型的資料集。

不過,委派不一定永遠可行。 資料來源會因其透過委派支援的函式和運算子而有所不同。 如果不可能完整委派公式,編寫環境會以警告標記無法委派的部分。 可能的話,請考慮變更公式,以免無法委派函式和運算子。 委派清單詳述可以委派哪些資料來源和作業。

如果委派不可行,PowerApps 只會取下一小組記錄以在本機處理。 篩選和排序功能會作用於一組縮減的記錄。 資源庫中可用的項目可能不太完整,這可能會造成使用者混淆。

如需詳細資訊,請參閱委派概觀

語法

Sort( Table, Formula [, SortOrder ] )

  • Table - 必要項目。 要排序的資料表。
  • Formula - 必要項目。 系統會針對資料表的記錄評估公式,並使用結果來排序資料表。 您可以參考資料表內的資料行。
  • SortOrder - 選擇性項目。 指定 SortOrder.Descending 以遞減順序排序資料表。 SortOrder.Ascending 是預設值。

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

  • Table - 必要項目。 要排序的資料表。
  • ColumnName(s) - 必要項目。 排序依據的資料行名稱,作為字串。
  • SortOrder(s) - 選擇性項目。 SortOrder.AscendingSortOrder.DescendingSortOrder.Ascending 為預設值。 如果提供多個 *ColumnNames*,除了最後一個資料行外,所有資料行都必須包含 *SortOrder*。

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - 必要項目。 要排序的資料表。
  • ColumnName - 必要項目。 排序依據的資料行名稱,作為字串。
  • SortOrderTable - 必要項目。 排序所依據包含值的單一資料行資料表。

範例

在接下來的幾個範例中,我們將使用 IceCream 資料來源,其中包含此資料表中的資料:

公式 說明 結果
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
IceCream 依其 Flavor 資料行排序。 Flavor 資料行包含字串,因此資料表會依字母順序排序。 根據預設,排序順序為遞增。
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
IceCream 依其 Quantity 資料行排序。 Quantity 資料行包含數字,因此資料表會依數字大小排序。 根據預設,排序順序為遞增。
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
IceCream 依其 Quantity 資料行排序。 Quantity 資料行包含數字,因此會依數字大小進行排序。 已指定排序順序為遞減。
Sort( IceCream, Quantity + OnOrder ) IceCream 分別依據其每筆記錄的 QuantityOnOrder 資料行總和排序。 總和為數字,因此資料表會依照數字大小排序。 根據預設,排序順序為遞增。 由於我們是依公式排序,而不是原始資料行值,因此不等同使用 SortByColumns
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
IceCream 先依其 OnOrder 資料行,再依其 Quantity 資料行排序。 請注意,"Pistachio" 在第一次排序時會根據 OnOrder 排在 "Vanilla" 上方,然後兩者再一起根據 Quantity 移至其適當的位置。
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) IceCream 根據包含 "Pistachio" 與 "Strawberry" 的單一資料行資料表來依 Flavor 資料行排序。 Flavor 為 "Pistachio" 的記錄會在結果中第一個出現,接下來是包含 "Strawberry" 的記錄。 至於 Flavor 資料行中不符合的值,例如 "Vanilla",會顯示在符合的項目之後。

逐步解說

您若要自行執行這些範例,請將 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 返回預設工作區。

排序

  1. 新增另一個按鈕,並將其 OnSelect 屬性設為此公式:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    上述的公式會建立第二個集合,名為 SortByFlavor,其中包含的資料與 Ice Cream 相同。 不過,新集合中的資料會依據 Flavor 資料行的字母順序遞增排序。

  2. 按下 F5、選取新的按鈕,然後按下 Esc。

  3. 選取 [檔案] 功能表中的 [集合],以顯示這兩個集合,然後按下 Esc 返回預設工作區。

  4. 重複最後三個步驟,但變更您想要建立的集合名稱,然後使用本節中稍早所述範例資料表中其他使用 Sort 的公式來取代 Sort 公式。

SortByColumns

  1. 新增另一個按鈕,並將其 OnSelect 屬性設為此公式:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    上述的公式會建立第三個集合,名為 SortByQuantity,其中包含的資料與 Ice Cream 相同。 不過,新集合中的資料會依據 Quanity 的數字大小排序,再依據 Flavor 資料行以遞減順序排序。

  2. 按下 F5、選取新的按鈕,然後按下 Esc。

  3. 選取 [檔案] 功能表中的 [集合],以顯示這三個集合,然後按下 Esc 返回預設工作區。

  4. 重複最後三個步驟,但變更您想要建立的集合名稱,然後使用本節中稍早所述範例資料表中其他使用 SortByColumns 的公式來取代 SortByColumns 公式。