いきなり答える備忘録

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

(Gスプレッドシート)文字列を分割する各種の方法

 Googleスプレッドシートで、文字列を分割する(複数のセルに分けて出力する)方法について紹介します。
 具体的には文字列中の特定の文字(列)を区切り文字として分割する方法と、文字列を1文字ずつ分割する方法に分けて紹介します。

  • メニュー操作による方法とSPLIT関数による方法で、文字列中の特定の文字(列)を区切り文字として文字列を分割できます。
  • MID関数とSEQUENCE関数を併用することで文字列を1文字ずつ分割できます。

区切り文字により分割する方法

メニュー操作による方法

 カンマ区切りされている2つの文字列があります。
 これらを、カンマを区切り文字として各セルに分割するものとします。



 対象とする2つのセルを選択し、メニューから「データ」→「テキストを列に分割」と選びます。



 すると自動的にカンマが区切り文字と判断され、文字列が各セルに分割されました。
 これだけで終了です(小さなメニューが表示されていますが、別のセルを選んだり別の操作に移れば消えます)。



 こちらはちょっと見づらいですが、カンマとセミコロン(;)が混在している文字列の例です。



 上記と同じ操作を実行すると、カンマの方が区切り文字とみなされて自動的に分割されました。



 ここで「自動的に検出」と表示されているプルダウンをクリックして「セミコロン」を選ぶと……



 今度はセミコロンを区切り文字として分割されました。
 このように区切り文字を選択することができます。



 こちらは同じようにして「・」で区切られた文字列を分割しようとしたところですが、「・」は区切り文字とみなされないらしく、全く分割されません。



 そこでプルダウンから「カスタム」を選択します。



 小さなテキストボックスができるので、そこに「・」と入力すると文字列が分割されました。
 このようにして任意の文字を区切り文字に指定することができます。また、2文字以上の文字列を指定することもできます。

SPLIT関数による方法

 こちらは関数を使う方法です。元の文字列はそのままで、分割された文字列を別の範囲に出力します。
 次の画像では、B3セルに入力されている文字列を、「・」を区切り文字として分割し、各セルに並べて出力しています。

 D3セル

=SPLIT(B3,"・")

 SPLIT関数の第1引数で対象となるセルを、第2引数で区切り文字を指定します。



 次の画像では「・」と「☆」の2種類の文字を区切り文字として分割しています。
 

 D3セル

=SPLIT(B3,"・☆")

 ちょっと独特な指定ですが、第2引数の文字列に含まれる1文字1文字が区切り文字とみなされます。



 では2文字以上の文字列を区切り文字にしたい場合にどうするかですが、次のようにします。

 D3セル

=SPLIT(B3,"・☆",FALSE)

 第3引数(各文字での分割)として「FALSE」を指定すれば第2引数の全体が1つの区切り文字(列)とみなされます。



 次の画像では、改行を区切り文字として分割しています。
 (D3:G3の文字列は上寄せ配置しています)

 D3セル

=SPLIT(B3,CHAR(10))

 区切り文字を「CHAR(10)」とすることで改行を区切り文字とする分割ができます。
 上記のメニュー操作による分割では改行を指定できないので、この方法によることとなります。



 SPLIT関数の主な機能は以上のとおりですが、次の記事でもう少し細かい機能や活用を紹介していますのでご覧ください。

www.officeisyours.com

1文字ずつ分割する方法

 こちらは文字列を1文字ずつ分割するという例です。区切り文字による分割ではないため上記のメニュー操作では実現できず、関数を使うこととなります。
 次の画像ではB3セルの「こんにちは」という文字列を1文字ずつ分割しています。

 D3セル

=ARRAYFORMULA(MID(B3,SEQUENCE(1,LEN(B3)),1))

 「SEQUENCE(1,LEN(B3))」の部分により、1から5までの5つの整数が生成されます。
 これをMID関数の第2引数(開始位置)とすることで「=MID(B3,1,1)」から「=MID(B3,5,1)」までの5つの式を一括して実行した結果が得られるというわけです。ただし引数として配列を与えていることになるので、ARRAYFORMULAが欠かせません。