Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【簡単便利!】スプレッドシートのセル内テキストを複数行に分割する方法

spreadsheet split text to rows

こんにちは!
Yuki (@yukibnb) です。

今回はGoogleスプレッドシートのセル内テキストを複数行に分割する方法を紹介します。

spreadsheet split text to rows

関数を使うことで、このようにA1セルに入力されているテキスト「1月,2月,3月,4月」を1発で複数行に分割することができます。

 

セル内テキストを複数行に分割する方法

split text to rows

今回使用する関数は2つあります。

  • SPLIT関数: テキストを列に分割する
  • TRANSPOSE関数: 行と列を入れ替える

「テキストを行に分割」を実現する単一の関数はありません。そのためまずSPLIT関数で列に分割し、分割した列をTRANSPOSE関数を使って列から行に入れ替えることで結果的に「テキストを行に分割」を実現しています。

文章だけではわかりにくいと思いますので、ふたつの関数をそれぞれ詳しく見てみましょう。

注意

ExcelにはTRANSPOSE関数はありますがSPLIT関数はありません。そのためこの記事で紹介する方法はGoogleスプレッドシートのみ有効です。

※VBAにはSPLIT関数はありますが、Excelのワークシート関数ではありません。
(2020/11/9現在)

  

SPLIT関数とTRANSPOSE関数

SPLIT関数: テキストを列に分割する

spreadsheet function split

SPLIT関数を使用すると、対象のセル内のテキストを区切り文字を基準に複数の列に分割することができます。

上記画像ではA1セルに「1月,2月,3月,4月」というテキストが入力されています。

このA1セル内の「1月,2月,3月,4月」をB1~E1セルの4列に渡って「1月」「2月」「3月」「4月」と分割したいとします。

分割したいテキストがあるのはA1セルなので、今回の「対象のセル」はA1セルです。

次に区切り文字を指定しましょう。A1セルの「1月,2月,3月,4月」テキストで各月を区切っている文字は「,」(半角スペース)です。

そのため今回の「区切り文字」は「,」です。

B1セルに=SPLIT(A1,",")と入力すると、B1~E1セルの4列に渡って「1月」「2月」「3月」「4月」と表示されます。

memo

もしA1セルに「1月★2月★3月★4月」と入力されていれば区切り文字は「★」です。「1月 2月 3月 4月」と入力されていれば区切り文字は「 」(全角スペース)です。

 

TRANSPOSE関数: 行と列を入れ替える

spreadsheet transpose

TRANSPOSE関数を使用すると、セル範囲の行と列を入れ替えることができます。

上記画像ではB1~E1に「あ」「い」「う」「え」と4列に渡ってテキストが入力されています。

A3セル(それ以外のセルでもOKです)に=TRANSPOSE(B1:E1)と入力すると、A3セル~A6セルの4行に渡って「あ」「い」「う」「え」と表示されます。

 

SPLIT関数とTRANSPOSE関数を同時に使用する

split text to rows

SPLIT関数とTRANSPOSE関数がどのような関数がわかりましたので、改めてこれら2つの関数を同時に使用した時の動作を見てみましょう。

B1セルにTRANSPOSE(SPLIT(A1,","))と記述した場合、処理の流れは以下のようになります。

1. SPLIT関数でテキストを複数列に分割

まずSPLIT(A1,",")によって、A1セルの「1月,2月,3月,4月」テキストはB1~E1セルの4列に渡って「1月」「2月」「3月」「4月」と分割されます。

2. TRANSPOSE関数でSPLIT関数を丸ごと囲み、複数列→複数行に入れ替え

そしてTRANSPOSE関数でSPLIT(A1,",")を丸ごと囲みTRANSPOSE(SPLIT(A1,","))と記述することで、B1~E1セルの「1月」「2月」「3月」「4月」の行と列が入れ替わり、B1~B4セルの4行に渡って「1月」「2月」「3月」「4月」と表示されます。

 
一見するとややこしそうですが、それぞれの関数の特徴と処理の流れをひとつひとつ見ていくと理解しやすいですね!

 

おまけ: 「改行」の区切り文字

transpose split spreadsheet

もしA1セル内のテキストが「1月,2月,3月,4月」や「1月★2月★3月★4月」のように目に見える区切り文字を持たず、以下のようにセル内で改行されていることもあります。

A
1 1月
2月
3月
4月

このような場合、改行の区切り文字をCHAR(10)と記述します。

その他の部分は全く同じですので、TRANSPOSE(SPLIT(A1,CHAR(10)))と記述すれば、A1セル内のテキストを複数行に分割することができます。

 

まとめ

今回はGoogleスプレッドシートのセル内テキストを複数行に分割する方法を紹介しました。

一つの関数では実現できないことも、複数の関数を組み合わせることで実現できるケースは多くあります。

SPLIT関数とTRANSPOSE関数はそれぞれ単体でも活用できる便利な関数ですので、また別の機会におすすめの使用方法を紹介したいと思います。

次回記事もご期待ください!