いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)SPLIT関数で分割した最後の項目を取得する

 Googleスプレッドシートで、文字列をSPLIT関数で分割したときの最後の項目(要素)の取得方法についてです。

  • 「=INDEX(SPLIT(文字列,区切り文字),COLUMNS(SPLIT(文字列,区切り文字)))」という式により、区切り文字で区切られた最後の要素を取得できます。

手順

 B列に、区切り文字(カンマ)で区切られたいくつかの文字列が入力されています。
 これらの文字列から、区切られた最後の項目をそれぞれ取得するものとします。
 最後の文字列のように文字列の末尾が区切り文字であるときに「空文字以外を取得する例」と、「空文字を取得する例」の2つの例を示します。

空文字を取得しない場合

 1つ目の例です。
 D3セルに次のように入力して下方にフィルコピーしています。

=INDEX(SPLIT(B3,","),COLUMNS(SPLIT(B3,",")))

 基本的にSPLIT関数で文字列を分割してINDEX関数で「最後の項目の番号」を指定して取得しています。最後の番号とは分割された項目の数であり「COLUMNS(SPLIT(B3,","))」にほかなりません。
 この例ではSPLIT関数の第4引数を省略していますので(TRUEと同じ)余分なカンマは無視され、常に1文字以上の文字が取得されます。
 なお、3つめ(5行目)のように半角数字を抽出した際には数値として取得されるのが特徴で、REGEX~関数などの文字列関数を使って抽出した場合とは異なる結果となります。

空文字を取得する場合

 2つ目の例です。
 D3セルに次のように入力して下方にフィルコピーしています。

=INDEX(SPLIT(B3,",",,FALSE),COLUMNS(SPLIT(B3,",",,FALSE)))

 こちらではSPLIT関数の第4引数をFALSEとしていますのでカンマは無視されず、文字列の末尾がカンマであるときは空文字が取得されます。

備考

 つまりは最後の区切り文字より後を取得すればいいので、REGEXEXTRACT関数で処理するやり方も考えらえます。
 ただしSPLIT関数は分割した結果が数値とみなせれば数値として取得することができるので、そうした相違点を考慮する必要があります。