共用方式為


Sort 和 SortByColumns 函數

適用於: 畫布應用程式 Copilot Studio 桌面流程 模型導向應用程式 Power Platform CLI Dataverse 函數 Power Pages

排序 資料表

注意

PAC CLI pac power-fx命令 不支援該 SortByColumns 功能。

Description

Sort 函數會根據公式對表格進行排序。

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

目前處理中的記錄其各個欄位可供您在公式內使用。 使用 ThisRecord 運算子,,或只需依名稱參照欄位,就像任何其他的值一樣。 As 運算子也可以用來命名所處理的記錄,這有助於讓您的公式更易於了解並讓嵌套記錄可以存取。 如需更多資訊,請參閱下列範例以及 處理記錄範圍

若要先依一欄排序,然後再依另一欄排序,請將公式 Sort 內嵌在另一欄中。 例如,您可以使用此公式先依 LastName 資料行排序 [連絡人] 資料表,然後依 FirstName 資料行排序: Sort( Sort( Contacts, LastName ), FirstName )

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

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

您可以與下拉式清單清單方塊控制項結合,SortByColumns讓使用者能夠選取要排序的欄。

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

表格 是一個值, Power Apps就像字串或數字一樣。 資料表可以傳遞至函數,也可以從函數傳回。 SortSortByColumn 不會修改資料表;相反,他們將一個表作為參數並傳回一個已經排序的新表。 請參閱 使用資料表 以取得詳細資料。

委派

如果可行,Power Apps 將委派篩選、對資料來源作業進行排序並視需要逐頁瀏覽結果。 例如,當您啟動應用程式以顯示填有資料的組件庫控制項時,最初將只會向裝置提供第一組記錄。 隨著使用者進行捲動,將陸續從資料來源提供額外的資料。 如此可縮短應用程式的啟動時間並能夠存取龐大的資料集。

不過,委派不一定始終可行。 各種資料來源支援委派的函數與運算子皆不盡相同。 如果未能完整委派某個公式,製作環境會以警告標示無法委派的部分。 可行的情況下,請考慮更改公式以避開無法委派的函數和運算子。 委派清單詳列了可供委派的資料來源及作業。

如果無法進行委派,Power Apps 將僅提取少量的記錄以供本機使用。 篩選和排序函數將對一組有限的記錄執行運算。 組件庫提供的內容不一定是完整的全貌,可能會造成使用者困惑。

詳細資訊請參閱委派概觀

語法

Sort表格公式 [, 排序順序 ] )

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

SortByColumns資料表資料行名稱1 [, 排序順序1資料行名稱2, 排序 順序2, ... ] )

  • Table - 必需。 要排序的資料表。

  • ColumnNames - 必需。 排序依據的欄位名稱,作為字串。

  • SortOrders - 可選。 SortOrder.AscendingSortOrder.DescendingSortOrder.Ascending 是預設值。 如果提供多個 ColumnNames ,除了最後一個欄位外,所有欄位都必須包含 SortOrder

    注意

    如果 SharePoint 和 Excel 資料來源包含有空格的欄位名稱,請將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"

SortByColumns表格列名排序順序表

  • Table - 必需。 要排序的資料表。

  • ColumnName - 必需。 排序依據的欄位名稱,作為字串。

  • SortOrderTable - 必需。 排序所依據包含值的單一欄位資料表。

    注意

    如果 SharePoint 和 Excel 資料來源包含有空格的欄位名稱,請將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"

範例

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

IceCream 範例。

公式 Description 結果
Sort( 冰淇淋, 風味 )

SortByColumns( 冰淇淋,“風味” )
IceCream 依其 Flavor 欄位排序。 Flavor 欄位包含字串,因此資料表會依字母順序排序。 根據預設,排序順序為遞增。 依字母順序排序。
Sort( 冰淇淋, 數量 )

SortByColumns( 冰淇淋, “數量” )
IceCream 依其 Quantity 欄位排序。 Quantity 欄位包含數字,因此資料表會依數字大小排序。 根據預設,排序順序為遞增。 依數值排序。
Sort( 冰淇淋、數量、排序順序降序 )

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

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

按步就班

您若要自行執行這些範例,請將 IceCream 資料來源建立為 集合

  1. 新增一個按鈕,並將其 OnSelect 屬性設為此公式:
    ClearCollect(霜淇淋, { 口味:巧克力,數量:100,OnOrder:150 }, { 口味:香草,數量:200,OnOrder:20 }, { 口味:草莓“,數量:300,OnOrder:0 }, { 口味:薄荷巧克力”,數量:60,OnOrder:100 }, { 口味:開心果,數量:200,OnOrder:10 } )
  2. 預覽應用程式、選取該按鈕,然後按下 Esc 返回預設工作區。
  3. 選取 檔案 功能表中的 集合,以顯示您剛剛建立的集合,然後按下 Esc 返回預設工作區。

Sort

  1. 新增另一個按鈕,並將其 OnSelect 屬性設為以下公式:
    ClearCollect( SortByFlavor, Sort( 冰淇淋, 風味 ) )

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

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

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

  4. 重複最後三個步驟,但變更您要建立的集合名稱,並將公式 Sort 取代為本節 Sort稍早使用 的範例表格不同的公式。

SortByColumns

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

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

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

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

  4. 重複最後三個步驟,但變更您要建立的集合名稱,並將公式 SortByColumns 取代為本節 SortByColumns稍早使用 的範例表格不同的公式。