INDEX関数の使い方【リストから値を取り出す】

関数
AppSheet関数

AppSheetのデータ式でよく使われる INDEX() 関数
これは、リストから特定の位置の値を取得するのにとても便利な関数です。

この記事では、基本的な構文から応用事例までを丁寧に解説します。


INDEX関数とは?

INDEX(list, position)
  • list:対象となるリスト(テーブルの列、SPLIT関数の結果など)
  • position:取得したい位置(1始まり)

基本の使い方

例1:単純なリストから値を取り出す

INDEX(LIST("A", "B", "C"), 2)

結果 → B


例2:列から2件目を取り出す

INDEX([列名], 2)

ただし、通常 [列名] は単一値になるため、このままでは使えません。
リストを取得するには SELECT()SPLIT() と組み合わせるのが基本です。


例3:複数行のテキストから1行目を取り出す

外部APIなどで取得した改行含みのレスポンスから、特定の行を取り出したい場合

INDEX(SPLIT([response],
), 2)

[response] が以下だった場合

番号:1234-6789-0000-1111
番号:1111-1234-2222-3333
番号:2222-6789-4444-5555

結果 → 番号:1111-1234-2222-3333


例4:SELECT()との併用で特定条件の行を取得

INDEX(SELECT(Users[Email], [Role] = "管理者"), 1)

Users テーブルで Role = "管理者" の1番目の Email を取得

ただしSELECTの結果が0件の場合はエラーになります。
ANY(SELECT(Users[Email], [Role] = "管理者"))
であれば問題なくエラーになりません。


例5:フォーム内で1件目の選択肢を初期値に

INDEX(SELECT(商品[商品名], [カテゴリ] = "文房具"), 1)

[カテゴリ] = "文房具" の[商品名]から最初の1件を取得


応用:SPLIT, SUBSTITUTEとの組み合わせで柔軟な整形処理

TRIM(SUBSTITUTE(INDEX(SPLIT([response], 
)), 1), "番号:", ""))

結果 → 1111-1234-2222-3333

→ 改行で分割 → 1行目だけ取得 → 不要なラベルを除去 → 不要な空白があればトリム
こうした複合処理で入力データを整形できます。


注意点

ポイント説明
インデックスは1から始まるINDEX(list, 0)INDEX(list, -1) はエラーになります
空のリストには注意SELECT()などが空リストの場合、INDEX()もエラーになる可能性があります
配列要素がTextでない場合もあるSPLIT()結果が [text] ではなく [number] の場合は型に注意

まとめ

目的式例
文字列から最初の行だけ取得INDEX(SPLIT([response],
, 1)
リストの2番目を取得INDEX(LIST("A", "B", "C"), 2)
条件に合う最初のメールを取得INDEX(SELECT(Users[Email], [Role]="管理者"), 1)
商品カテゴリでの初期値選定INDEX(SELECT(商品[商品名], [カテゴリ]="文房具"), 1)

おすすめの活用場面

  • 改行含むデータの整形処理
  • SELECTやFILTERの絞り込み後の値取得
  • 初期値の設定
  • レスポンス文の分析や表示

AppSheetでの文字列処理を柔軟に扱える INDEX() 関数
SPLIT()SUBSTITUTE() との併用で、より高度なロジックも実現できます