エクセルの区切り位置を自動化する方法|TEXTSPLIT・Power Query・VBAを比較

エクセル区切り位置自動化!関数・マクロ・パワークエリ全手法

SkillStack Lab 運営者の「スタック」です。

システムから出力したCSVやログデータをExcelへ取り込み、そのたびに「区切り位置」を設定していませんか。

1回だけなら手作業でも問題ありませんが、毎日・毎月同じ操作を繰り返しているなら、自動化を検討する価値があります。

結論から言うと、セルの文字を動的に分割するならTEXTSPLIT、定期的なCSVならPower Query、Excel操作そのものを自動化するならVBAと使い分けるのが分かりやすいです。

私自身も以前は、何千行ものデータを前にして、同じ手順を繰り返す作業に時間を取られていました。

スタック

毎回同じCSVを開いて、同じ場所で区切って、同じ形に整える。このような繰り返し作業は、自動化を考えるきっかけになります。

CSVデータをExcelの関数・Power Query・VBAで整形する区切り位置自動化のイメージ

この記事では、「エクセルの区切り位置を自動化したい」という方へ、TEXTSPLIT関数、Power Query、VBAの使い分けから、先頭の0が消える問題、CSV取り込み時の注意点まで解説します。

この記事で分かること
  • 区切り位置を自動化する3つの方法
  • TEXTSPLIT関数で文字列を自動分割する方法
  • Power QueryでCSVの分割手順を再利用する方法
  • VBAのTextToColumnsで区切り位置を実行する方法
  • 社員番号などの先頭の0を消さない方法
目次

エクセルの区切り位置を自動化する3つの方法

関数・Power Query・VBAによるExcel区切り位置自動化の使い分けを示す比較図

区切り位置を自動化する方法は、大きく分けると次の3つです。

方法向いている作業特徴難易度
TEXTSPLITセル内の文字分割元データの変更に合わせて再計算
Power Query定期的なCSV・大量データの整形一度作った変換手順を再利用低〜中
VBAExcel操作を含む定型処理TextToColumnsなどの操作をコード化中〜高

迷った場合は、次の基準で考えてみてください。

  • セルの内容が変わるたびに結果も変えたい → TEXTSPLIT
  • 毎月同じ形式のCSVを取り込みたい → Power Query
  • 分割以外のExcel操作もまとめて自動化したい → VBA

Excel全体の自動化手段を比較したい場合は、Excel自動化の方法を用途別に比較した記事も参考にしてください。

TEXTSPLIT関数で区切り位置を自動化する

Microsoft 365またはExcel 2024を使っているなら、区切り文字によるセル分割にはTEXTSPLIT関数が便利です。

TEXTSPLITはExcel 2021の関数ではありません。Microsoftの現行サポート情報では、Excel for Microsoft 365とExcel 2024などが対象です。

例えばA2セルに次の文字列が入っているとします。

東京,営業部,田中

カンマで分割するなら、次の数式を入力します。

=TEXTSPLIT(A2,",")

数式を入力したセルから右方向へ結果が展開されます。

TEXTSPLIT関数による文字列分割と従来のLEFT・MID・FIND関数を比較した図解

複数の区切り文字にも対応できる

TEXTSPLITは複数の区切り文字も指定できます。

例えば「カンマ」と「半角スペース」のどちらでも分割するなら、次のように配列定数を指定します。

=TEXTSPLIT(A2,{","," "})

連続する区切り文字によって空白セルを作りたくない場合は、ignore_empty引数も利用できます。

=TEXTSPLIT(A2,{","," "},,TRUE)

TEXTSPLITの構文や対応バージョンは、Microsoftサポートの「TEXTSPLIT 関数」で確認できます。

TEXTSPLITが使えないExcelでは従来関数を組み合わせる

TEXTSPLITが利用できない環境では、LEFT・MID・FIND・LENなどを組み合わせる方法があります。

A2セルに「田中 太郎」のように姓と名が半角スペースで区切られている場合は、例えば次のように分割できます。

姓:

=LEFT(A2,FIND(" ",A2)-1)

名:

=MID(A2,FIND(" ",A2)+1,LEN(A2))

ただし、区切り文字が複数種類ある、分割数が多い、といったデータでは数式が読みにくくなります。その場合はPower Queryも検討してください。

Power QueryならCSVの区切り処理を繰り返し使える

毎月・毎週のように同じ形式のCSVを取り込んでいるなら、Power Queryは有力な選択肢です。

Power Queryでは、外部データの取り込みや列の分割、不要列の削除、データ型の変更などを「適用したステップ」として保存できます。

Power QueryでCSVの取得・加工・出力手順を保存して再利用する仕組み

Windows版Excelでは、Excel 2016以降の「データの取得と変換」としてPower Queryを利用できます。

Power Queryで区切り文字を指定する手順

  1. [データ]タブを開く
  2. [テキスト/CSVから]を選択する
  3. 対象のCSVファイルを選択する
  4. [データの変換]を選んでPower Queryエディターを開く
  5. 分割したい列を選択する
  6. [列の分割]→[区切り記号による分割]を選択する
  7. カンマ・スペース・タブなどの区切り記号を指定する
  8. [閉じて読み込む]でExcelへ戻す

同じデータソースを使う場合は、次回以降にクエリを更新することで、保存した変換手順を再実行できます。

ファイル名や保存場所、列構成など元データの条件を大きく変えると、既存クエリをそのまま更新できないことがあります。自動化では「入力データの形式をそろえる」ことも重要です。

Power Queryの基本操作をさらに詳しく知りたい方は、Power Queryの使い方を実務ベースで解説した記事も参考にしてください。

Power Queryの列分割は、Microsoftサポートの「テキストの列を分割する」でも確認できます。

VBAのTextToColumnsで区切り位置を実行する

Excel上のボタンから処理したい、分割後に別の処理も続けたい、といった場合はVBAが選択肢になります。

Excel VBAには、区切り位置の処理を実行するRange.TextToColumnsメソッドが用意されています。

例えばA2:A1000にカンマ区切りの文字列が入っている場合は、次のように記述できます。

Sub SplitByComma()

    With Worksheets("Sheet1").Range("A2:A1000")
        .TextToColumns _
            Destination:=.Cells(1, 1), _
            DataType:=xlDelimited, _
            TextQualifier:=xlTextQualifierDoubleQuote, _
            Comma:=True
    End With

End Sub

この例では、A列にある文字列をカンマで分割します。

分割結果は右側の列へ展開されます。既存データを上書きしないよう、実行前に出力先を確認し、重要なブックではバックアップを取ってから試してください。

TextToColumnsの引数やFieldInfoの仕様は、Microsoft Learnの「Range.TextToColumns メソッド」で確認できます。

先頭の0を残すならFieldInfoで文字列を指定する

社員番号や商品コードの「00123」のように、先頭の0自体に意味があるデータは注意が必要です。

Excelが数値として解釈すると、00123が123になる場合があります。

TextToColumnsでは、FieldInfoを利用して出力列を文字列として解析できます。

FieldInfo:=Array( _
    Array(1, xlTextFormat), _
    Array(2, xlGeneralFormat) _
)

xlTextFormatはテキスト形式を意味します。どの列を文字列として扱うかは、実際のCSV構成に合わせて設定してください。

VBAを使うべきか迷っている場合は、VBAとPower Query・Office Scripts・Pythonなどの使い分けも確認してみてください。

更新頻度・データ量・難易度から関数・Power Query・VBAを比較する一覧表

区切り位置で先頭の0が消えるときの対処法

Excelの区切り位置で社員番号などの先頭の0が消える問題と対策を示す図解

区切り位置で特に注意したいのが、社員番号・商品コード・電話番号などの先頭ゼロです。

例えば、

00123

を数値として取り込むと、

123

になることがあります。

手動の区切り位置では列のデータ形式を文字列にする

従来の「区切り位置」ウィザードを利用する場合は、最後の画面で対象列を選択し、列のデータ形式を「文字列」に指定します。

コードや社員番号のように計算する必要がない値は、数値ではなく文字列として管理する方が適している場合があります。

CSVなら「テキスト/CSVから」で取り込む

CSVをダブルクリックして開くと、Excelは現在の既定設定を使って各列のデータを解釈します。

そのため、先頭ゼロや日付形式を自分で管理したいCSVでは、ファイルを直接開くのではなく、Excelの[データ]から取り込む方法が便利です。

  1. Excelで新しいブックを開く
  2. [データ]を選ぶ
  3. [テキスト/CSVから]を選ぶ
  4. 対象ファイルを選択する
  5. 区切り記号やデータの状態をプレビューで確認する
  6. 必要なら[データの変換]で型を設定する

毎回同じCSVを取り込むなら、手動の「区切り位置」を繰り返すより、Power Queryで取り込み手順自体を保存する方法を検討しましょう。

Microsoftも、CSVを開く方法とは別に[データ]→[テキスト/CSVから]で接続して取り込む方法を案内しています。列の型や先頭ゼロを制御したい場合はこちらが便利です。

分割される列数が毎回変わる場合はどうする?

「先月は3項目だったのに、今月は5項目ある」というように、区切り文字の数が変わるデータでは方法選びに注意します。

TEXTSPLITは結果に合わせてスピルする

TEXTSPLITなら、区切られた結果の個数に合わせて隣のセルへ展開されます。

ただし、展開先のセルに別のデータが入っていると、スピルできずエラーになるため、結果を表示する周辺は空けておきます。

Power Queryは出力列数の変化を確認する

Power Queryの列分割では、作成されたクエリが想定する列数を確認してください。

M言語のTable.SplitColumnでは、新しく作る列名や列数、余分な値をどう扱うかを指定できます。標準の処理では、想定した列数を超える値がある場合の扱いに注意が必要です。

分割数が頻繁に変わるデータなら、「列を増やし続ける」設計が本当に必要かも確認してください。データによってはPower Queryで列ではなく行へ分割した方が後工程を作りやすい場合があります。

住所の自動分割は単純な区切り位置では難しい

住所や氏名のように、必ずしも決まった区切り文字が入っていないデータは注意が必要です。

例えば住所を「都・道・府・県」で単純にTEXTSPLITすると、「京都府」のように途中にも対象文字が含まれる住所を正しく処理できません。

=TEXTSPLIT(A2,{"都","道","府","県"})のような式だけで、日本全国の住所を都道府県とそれ以降へ正確に分割しようとしないでください。

住所を安定して分割するなら、都道府県マスターとの照合や、元システム側で住所項目を分けて出力できないかを検討する方が安全です。

一方、「東京都新宿区1-2-3」の文字部分と数字部分を分けたいなど、文字種の変化に規則性がある場合は、Power Queryの「数字から数字以外」「数字以外から数字」などの分割方法が使える場合があります。

区切り位置を手作業で使うならキーボード操作も活用する

年に数回しか行わない作業まで、無理にPower QueryやVBAへ置き換える必要はありません。

Windows版Excelでは、Altキーを押すとリボン上にキーヒントが表示されます。

Microsoftのキーボードショートカットでは、Alt + Aで[データ]タブを開けます。その後は画面に表示されたキーヒントを使って[区切り位置]を選択できます。

単発処理なら、このような操作で十分な場合もあります。

エクセルの区切り位置自動化でよくある質問

区切り位置を自動化するなら何がおすすめですか?

セル内の文字を自動分割するだけならTEXTSPLIT、毎月同じCSVを取り込むならPower Query、分割後の転記・保存などExcel操作もまとめて実行するならVBAが候補です。

TEXTSPLITはExcel 2021でも使えますか?

Microsoftの現行サポート情報では、TEXTSPLITの対象はExcel for Microsoft 365、Excel 2024などです。Excel 2021は対象に含まれていません。

CSVの先頭の0を消さずに取り込むにはどうすればいいですか?

社員番号や商品コードなどは文字列として取り込みます。CSVの場合は[データ]→[テキスト/CSVから]で取り込み、必要な列のデータ型を確認すると管理しやすくなります。

Power QueryとVBAはどちらを使えばいいですか?

CSVの取得・分割・列削除・型変換などデータ整形が中心ならPower Queryを優先して検討します。セル操作、シート操作、帳票作成などExcelそのものの操作まで自動化したい場合はVBAが向いています。

まとめ|繰り返す区切り位置はPower Queryも検討しよう

Excelの区切り位置を自動化するときは、単に「一番高度な方法」を選ぶ必要はありません。

  • 単発の作業 → 手動の区切り位置
  • セルの文字を動的に分割 → TEXTSPLIT
  • 定期的なCSVの取り込み・整形 → Power Query
  • Excel操作までまとめて実行 → VBA

特に、毎月同じCSVを開いて、同じ列を分割し、同じ形式へ整えているなら、Power Queryとの相性がよい作業です。

最初に一度だけ取り込みと変換手順を作っておけば、その後は同じ処理を更新によって再利用できます。

手作業から関数・Power Queryへ段階的にExcel業務を自動化するロードマップ

毎月のCSV加工を減らしたい方は、実務での使い方を一通り確認してみてください。


次は、仕事で使えるスキルをもう一段積み上げる

SkillStack Labでは、Excel・生成AI・自動化・オンライン学習を、実務で使うことを前提に解説しています。今の課題に近いテーマから次の記事へ進んでみてください。

生成AIを仕事で使いたい

ChatGPTなどを「触ったことがある」から、実際の仕事で使えるレベルへ進みたい方へ。

生成AIの勉強方法・学習順序を見る →

Excel作業を自動化したい

関数だけでは限界を感じてきたら、Power Query・VBA・Pythonなども含めて自動化を考えます。

Excel業務を自動化する方法を見る →

体系的にスキルを学びたい

Excel・VBA・Python・生成AIなどを、動画講座で効率よく学びたい方へ。

社会人向けUdemy講座の選び方を見る →

何から始めるか迷ったら、今の仕事で最も時間がかかっている作業や、身につけたいスキルに近いテーマから選んでください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次