Power Appsで姓と名を分けて取り出す|Split・First・Lastの使い方

SharePointやActive Directoryから取得できる名前のデータは、「田中, 太郎」のようにカンマ区切りで姓と名が逆順に並んでいることがあります。Splitを使えば、この形式をアプリ上で自由に組み替えられます。

Splitの仕組み:文字列をテーブルに変換する

Split関数は、文字列を区切り文字で分割し、テーブルとして返す関数です。引数は2つで、対象の文字列と区切り文字を指定します。

Split("田中, 太郎", ", ")

この結果は1列(Value列)のテーブルになり、最初の行に「田中」、2行目に「太郎」が入ります。文字列を返すわけではないため、Splitの結果を直接ラベルのTextプロパティに渡してもうまく表示されません。ここが最初に戸惑うポイントです。

FirstとLastで要素を取り出す

Splitが返すテーブルから特定の行を取り出すには、FirstやLastを使います。

// 最初の行(姓)を取り出す
First(Split("田中, 太郎", ", ")).Value

// 最後の行(名)を取り出す
Last(Split("田中, 太郎", ", ")).Value

FirstとLastはそれぞれテーブルの先頭行・末尾行をレコードとして返します。その後ろに .Value をつけることで、Value列の値(文字列)として取り出せます。Splitで2つに分割した場合、FirstとLastの組み合わせで十分対応できます。

3つ以上に分割する場合はIndex関数が必要になりますので、詳細はこちらの記事をご覧ください。

実例3パターン

カンマ区切りの姓名を反転する

Active DirectoryからUser().FullNameで取得できる名前が「田中, 太郎」形式の場合、次の数式で「太郎 田中」に組み替えられます。

Last(Split(User().FullName, ", ")).Value & " " & First(Split(User().FullName, ", ")).Value

ただし、Split関数を2回書くと数式が長くなります。Withを使うとすっきり書けます。

With(
    { parts: Split(User().FullName, ", ") },
    Last(parts).Value & " " & First(parts).Value
)

Withを使った数式の整理についてはPower AppsのWith関数の記事も参考にしてください。

コレクションに格納して加工する

Splitの結果をコレクションに入れておくと、複数の場所で使い回せます。たとえばボタンのOnSelectでコレクションを作り、ギャラリーに表示する構成です。

ClearCollect(
    colNameParts,
    Split(TextInput_Name.Text, " ")
)

コレクションの使い方についてはPower Appsのコレクション活用入門で詳しく解説しています。

SharePointリストへの整形保存

SharePointリストに氏名を格納する際、姓と名を別の列に分けて保存したいケースがあります。Splitで分割した値をPatchでそれぞれの列に書き込めます。

With(
    { parts: Split(TrimEnds(TextInput_FullName.Text), " ") },
    Patch(
        社員マスタ,
        Defaults(社員マスタ),
        {
            姓: First(parts).Value,
            名: Last(parts).Value
        }
    )
)

SharePointリストの読み書きパターンについてはSharePointリストのCRUDパターンをあわせて参考にしてください。スペース混入が心配な場合は、Splitの前にTrimEndsをかけておくと安心です。TrimとTrimEndsの使い方はこちらの記事をご覧ください。

まとめ

Splitは文字列をテーブルに変換する関数で、そのままでは文字列として扱えません。First・Lastと組み合わせることで目的の要素を取り出せます。Withと組み合わせれば、Split関数を何度も書く必要がなくなり、数式がすっきりします。

3つ以上の区切りがある場合や、n番目の要素を取り出したい場合はIndex関数が役立ちます。

Power Appsのその他のテキスト関数についての完全ガイドはこちらの記事をご覧ください

地道な処理ですが、データ整形ができるようになるとアプリの完成度がぐっと上がります。ぜひ試してみてください。

Xでフォローしよう