Excel関数 逆引き集 | CSV行を分解 → TEXTSPLIT

Excel
スポンサーリンク

概要

「1行のCSV文字列を、セルごとにきれいに分けたい」
山田,東京都,30,営業 みたいな1行テキストから、
「山田」「東京都」「30」「営業」を横に展開したい。

そんなときにとても便利なのが TEXTSPLIT 関数です。
特に「カンマ区切りのCSV行を“そのままセルに分解したい”」ときの王道パターンになります。

ここでは、プログラミング初心者でもイメージしやすいように、
CSVを題材に TEXTSPLIT の考え方と実用テンプレートを丁寧に解説していきます。


TEXTSPLIT 関数の基本

TEXTSPLIT は、簡単に言うと
「文字列を“区切り記号”でバラして、セルに自動展開してくれる関数」です。

書式は次の通りです。

=TEXTSPLIT(文字列, 列区切り文字, [行区切り文字], …)

もっとシンプルに使うときは、こう考えてOKです。

=TEXTSPLIT(文字列, "区切り文字")

例えば A2 に

山田,東京都,30,営業

という文字列が入っているとき、
B2 に

=TEXTSPLIT(A2, ",")

と書くと、B2 から右方向に

B2:山田
C2:東京都
D2:30
E2:営業

というふうに、カンマで区切られた要素が、自動的に横並びで展開されます。
これが「CSV行を分解する」基本の動きです。


CSV行を“横に”分解する基本パターン

最も典型的なのが、「1セルの中のCSV行 → 横方向の複数セル」に分解するパターンです。

たとえば A2 に、外部からコピペした1行のCSVが入っているとします。

例:A2
001,山田太郎,東京都,30,営業

これを「ID」「名前」「都道府県」「年齢」「部署」として、B2 から右に並べたいときの式はこうなります。

=TEXTSPLIT(A2, ",")

これだけで

B2:001
C2:山田太郎
D2:東京都
E2:30
F2:営業

のように、きれいにカンマごとに区切られます。

ポイントは「区切り文字として "," を指定する」ことだけです。
CSV なら、基本的にはカンマで区切られているので、そのまま使えます。


ヘッダー行や複数行データへの応用

もし A2 にヘッダー行、A3 以降にデータ行が入っているなら、
それぞれの行で TEXTSPLIT を使えば、行ごとにきれいに展開できます。

A2 に
ID,名前,都道府県,年齢,部署

A3 に
001,山田太郎,東京都,30,営業

B2 に

=TEXTSPLIT(A2, ",")

B3 に

=TEXTSPLIT(A3, ",")

として下方向にコピーすれば、
A列に「元テキスト」、B列以降に「分解済みのデータ」という構成になります。

「1セルに1行のCSV」という状態から、
「1行に複数列のシンプルな表」に変換するイメージです。


区切り文字がカンマ以外のパターン

CSV 以外にも、区切りがタブやセミコロンになっていることがあります。
TEXTSPLIT は、区切り文字を変えるだけで対応できます。

タブ区切りなら、区切り文字に CHAR(9)(タブの文字コード)を使います。

例えば、A2 にタブ区切りで

001<TAB>山田太郎<TAB>東京都<TAB>30<TAB>営業

が入っている場合、B2 に

=TEXTSPLIT(A2, CHAR(9))

とすれば、タブごとに分割されます。

セミコロン区切り(;)なら、

=TEXTSPLIT(A2, ";")

と書けばOKです。

重要なのは
「何で区切られているか?」を把握し、それを TEXTSPLIT の第2引数に渡すことです。


ダブルクォーテーション付きCSVへの注意点(概要)

実際のCSVファイルでは、

"山田,太郎",30,"営業部"

のように、項目の中にカンマが含まれるとき、
ダブルクォーテーション " " で囲んでいる場合があります。

TEXTSPLIT 単体では
「中身のカンマ」と「区切りのカンマ」の区別まではしてくれません。

このレベルになると、

Power Query を使う
Office スクリプトやVBAで専用のパース処理を書く

といった“1段階上の方法”の出番になります。

「ひとまず、素直なカンマ区切り(項目内にカンマを含まない)CSV」を前提に、
TEXTSPLIT で分解するところから慣れていくのがおすすめです。


数値や日付として再利用する

TEXTSPLIT で分解した結果は、基本的には「文字列」として扱われます。
ただし、Excel が自動で数値や日付と認識できる形なら、そのまま数値や日付としても扱われます。

もし、「数値として確実に使いたい」なら、VALUE 関数をかませる方法があります。

たとえば、B2 に TEXTSPLIT の結果として「30」が入っている場合、
C2 に

=VALUE(B2)

と書けば、計算に確実に使える数値 30 になります。

日付文字列についても、

=VALUE(B2)

として、セルの表示形式を「日付」に変えることで、日付型に変換できます。


CSV行分解の“型”をひとつにまとめる

CSVの1行をセルに分解する定番の「型」は、次の1行です。

=TEXTSPLIT(A2, ",")

これを

1つのセルに貼られたCSV行(文字列)を
横方向のセルに展開したい場所に入力する

というイメージで使います。

CSVの行が複数あるなら、行ごとに TEXTSPLIT をコピーするか、
水平展開された結果をコピーして値貼り付けする、などで整えていきます。


問題1

A2 に
001,山田太郎,東京都,30,営業
という1行のCSV文字列が入っています。
これをカンマごとに分解して、B2 から右方向に展開したいです。
TEXTSPLIT を使った式を書いてください。

=TEXTSPLIT(A2, ",")

問題2

A2 に
1001,佐藤花子,大阪府,25,総務
という文字列が入っています。
これを B2 から右に分解して、「1001」「佐藤花子」「大阪府」「25」「総務」と並べたいです。
TEXTSPLIT の式を書いてください。

=TEXTSPLIT(A2, ",")

問題3

A2 にタブ区切りで
2001<TAB>高橋一郎<TAB>福岡県<TAB>40<TAB>開発
というデータが入っています(<TAB> は実際にはタブ文字)。
これを TEXTSPLIT で分解して、B2 から右に展開したいです。
区切り文字に CHAR 関数を使った式を書いてください。

=TEXTSPLIT(A2, CHAR(9))

問題4

A2 に
ID,名前,都道府県,年齢,部署
というヘッダー行のCSV文字列が入っています。
これを B2 から右方向に「ID」「名前」「都道府県」「年齢」「部署」と展開したいです。
TEXTSPLIT を使った式を書いてください。

=TEXTSPLIT(A2, ",")

問題5

A2 に
3001,鈴木次郎,愛知県,35,営業
というCSV行が入っています。
TEXTSPLIT で分解したあと、年齢(4番目の要素)を数値として使いたいです。
B2 から右に TEXTSPLIT を使い、D2 に入った年齢を数値化するための式を書いてください。

B2(分解用):

=TEXTSPLIT(A2, ",")

D2(年齢を数値化):

=VALUE(D2)

CSV行の分解は、TEXTSPLIT を知っているかどうかで、作業効率がまるで変わります。
まずは

=TEXTSPLIT(A2, ",")

という“1行の型”を、そのまま指に覚えさせるつもりで使ってみてください。
そこから、区切り文字を変えたり、分解結果を数値や日付に変換したりと、
少しずつステップアップしていけば大丈夫です。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました