#

排序資料表

說明

##

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

    注意:對於包含具有空格之資料行名稱的 SharePoint 和 Excel 資料來源,將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"

SortByColumns( Table, ColumnName, SortOrderTable )

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

    注意:對於包含具有空格之資料行名稱的 SharePoint 和 Excel 資料來源,將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"

範例

##

在接下來的幾個範例中,我們將使用 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 公式。