並び替えで利用できる式には Sort関数 と SortByColumns関数 があります。
どのような使い分けをすれば良いのかいまいち分かりません。
Descending(降順)
- 数字の大きい方から小さい方に並ぶ
- 直近の日付から古い方に並ぶ
Ascending(昇順)
- 数字の小さい方から大きい方に並ぶ
- 古い日付から直近の日付に並ぶ
目次
Sort関数
基本的な式は以下の通り
Sort(データソース, 並び替え対象の式, 並び順)例
Sort('タスク管理リスト', Title, SortOrder.Descending)並び替えの対象が単純な列だけではなく、式(関数や計算式)も使えることが特徴的です。
例えば Len(Title) や DateDiff(…) など
例 Title列の文字の長さで並び替える
Sort(タスク管理リスト, Len(Title), SortOrder.Descending)ですが、式を使用した瞬間、委任できなくなるため注意です
SortByColumns関数
基本的な式は以下の通り
SortByColumns(データソース, "列名", 並び順)例
SortByColumns(タスク管理リスト,"Title",SortOrder.Descending)Sortのように式を使用することはできず、単純列名で指定を行います。
ある意味分かりやすく、委任可能な列であれば確実に委任されます。
複数列での並び替えも可能です
例
SortByColumns('タスク管理リスト',
"Title", SortOrder.Descending,
"field_3", SortOrder.Ascending
)※リスト列は内部列名で設定する必要があります
SharePointリストで委任できる列
- Title(既定のタイトル列)
- 数値列
- 日付列
- 単一行テキスト列
以下の列は委任できません
| 列の種類 | 備考 |
|---|---|
| 複数選択の選択肢(Choice)列 | 単一選択なら委任可能。複数選択は不可。 |
| ユーザー(Person or Group)列 | ユーザー名やメールアドレスでの並び替えは不可。 |
| 複数行テキスト(Multiline Text)列 | プレーンテキストでも委任不可。 |
| 添付ファイル列 | 並び替え対象として使用不可。 |
| ハイパーリンクまたは画像列 | URLや画像の並び替えは不可。 |
| 計算列(Calculated Column) | 式の結果は委任不可。 |
| ルックアップ列(Lookup) | 参照先の値で並び替えは不可。 |
| Yes/No(Boolean)列 | 並び替えは不可。フィルターは可能。 |
まとめ
計算式を使用した並び替えを行いたい場合は Sort ※ただし委任不可
計算式を使用しない並び替えの場合は SortByColumns
あと、複数の列を使用した並び替えはSortByColumnsでしか実現できないため、式を複数使用して並び替えることもできないと考えた方が良いですね。
Byカラム(列)でソートする、って覚えておけば間違いなし。
絞込みと並び替えを混在させる場合
例えば、進捗状況の列が「完了」だけに絞った中で、期限(field_2)を昇順、管理番号(Title)を降順にしたい。
※すべての列を1行テキストで作成したリストです
式は以下のようになります。
Filter部分は列名が「進捗状況」でも問題ないですが、並び替えで利用する列は内部列じゃないと認識されない模様。
SortByColumns(
Filter(タスク管理リスト, 進捗状況 = "完了"),
"field_2", SortOrder.Ascending,
"Title", SortOrder.Descending
)