AppSheetでは、1つのセルに複数の値を持たせることができる List型
(EnumListや仮想列など)があり、これを計算式(式演算)で自在に操作することができます。
今回は、以下のようなニーズに応えるための 「Listの操作テクニック」 を解説します。
想定ケース
- チェックリストのように選択された値に、ある条件で値を「追加」したい
- 重複を避けながら、リストに「別の値セットを結合」したい
- 特定の値を「除外(削除)」したい
基本構文
追加(+)
[現リスト] + LIST("追加したい値")
LIST("A", "B") + LIST("C", "D")
除外(-)
[現リスト] - LIST("削除したい値")
例1:EnumListに動的に値を追加
ユーザーが選択した部署リスト([完了部署]
)に、「管理部」を強制的に追加したい。
[完了部署] + LIST("管理部")
🧠 この式を使う場所
例2:既存のリストから特定の部署だけ除外
完了部署に「テスト部」が含まれていたら、それを削除したい。
[完了部署] - LIST("テスト部")
🧠 注意:リスト内に同じ値が複数ある場合、すべて削除されます。
例3:フィルタ結果と手動選択値の合体
ステータスが「完了」になったタスク担当者リストを自動取得し、ユーザーの選択値と結合したい。
[手動選択] + SELECT(Tasks[担当者], [ステータス] = "完了")
注意点
問題 | 解説 |
---|---|
重複が発生する | AppSheetのリスト演算は重複をそのまま許容するため、重複除去が必要なら UNIQUE() を使用 |
空のリストに加算すると無視される | [リスト] + LIST() は何も変化しません |
単一値との演算 | "管理部" はリストではないので LIST("管理部") にする必要あり |
応用:UNIQUE(), INTERSECT(), EXCEPT()
AppSheetには、より高度なリスト演算関数も存在します。
関数 | 機能 | 例 |
---|---|---|
UNIQUE() | 重複を除去 | UNIQUE([リスト] + LIST("A")) |
INTERSECT() | 共通項を抽出 | INTERSECT([リスト1], [リスト2]) |
EXCEPT() | リスト1にあって2にない要素 | EXCEPT([リスト1], [リスト2]) |
まとめ
操作 | 構文例 |
---|---|
値を追加 | [対象リスト] + LIST("追加したい値") |
値を削除 | [対象リスト] - LIST("削除したい値") |
リスト結合 | LIST("A", "B") + LIST("C", "D") |
重複除去 | UNIQUE([対象リスト]) |