複数の区切り文字を含むテキストファイルをExcelにインポートする3つの方法
この記事では、複数の区切り文字(カンマやセミコロンなど)を含むテキストファイルのデータを、Excelワークシートにインポートする3つの方法を解説します。Excelの標準機能とVBAコードの両方を使ったアプローチを紹介するので、状況に応じて最適な方法を選べるようになります。それでは、具体例を見ながら各方法を詳しく確認していきましょう。
複数の区切り文字を含むテキストファイルをExcelにインポートする3つの方法
ここでは、複数の区切り文字が混在したデータセットが保存されたテキストファイルを例にします。テキストファイル内のデータセットは以下のようなイメージです。

このデータセットは、ある店舗の販売明細を表しています。練習用にテキストファイルをダウンロードできるリンクも用意しています。このファイルでは、各データがカンマまたはセミコロンで区切られています。これらのデータをテキストファイルからExcelスプレッドシートに取り込むのが今回のゴールです。
方法1:レガシーウィザード機能を使ってインポートする
テキストファイルをインポートするためのレガシーウィザード機能には、インポート後のデータ構造を細かく指定できるオプションが多数用意されています。
レガシーウィザードを開く手順
- リボンの「データ」タブをクリックします。
- 「データの取得」を選択します。
- 「レガシーウィザード」にマウスを合わせます。
- 「テキストから(レガシ)」を選択します。

「テキストから(レガシ)」が表示されない場合
メニューに「テキストから(レガシ)」の項目が見つからない場合は、以下の手順で有効化できます。
- キーボードでAlt + T + Oを押して、Excelのオプションを開きます。
- 「データ」タブをクリックします。
- 「レガシ データ インポート ウィザードを表示する」の項目にある「From Text (Legacy)」にチェックを入れます。
- 最後に「OK」をクリックして設定を保存します。

テキストファイルをインポートする
「テキストから(レガシ)」を選択すると、「テキスト ファイルのインポート」ウィンドウが開き、対象のテキストファイルを選択できるようになります。ファイルの保存場所へ移動して、インポートしたいファイルを選びましょう。

設定を行う
ステップ1/3:
- 「区切り文字付き」を選択します。
- サンプルデータにはヘッダー行があるため、「先頭の行をデータの見出しとして使用する」にチェックを入れます。
- 「次へ」ボタンをクリックします。

ステップ2/3:
- 区切り文字のオプションで、「セミコロン」と「カンマ」の両方にチェックを入れます。
ポイント:今回のデータセットにはこの2種類の区切り文字が含まれています。一覧にない記号を使いたい場合は、「その他」オプションで任意の文字を指定することも可能です。
- さらに、「連続する区切り文字を1文字として扱う」にもチェックを入れます。
- 「次へ」ボタンをクリックします。

ステップ3/3:
- 列のデータ形式はデフォルトで「標準」になっています。今回はそのまま変更せずに進めます。
- 最後に「完了」ボタンをクリックします。

貼り付け先を指定する
上記の手順が完了したら、インポートしたデータの配置場所を指定します。ここでは、現在のワークシートのセルA1を選択しました。

インポート結果

関連記事:別のExcelファイルからデータをインポートする方法(2つの方法)
方法2:「データの取得と変換」機能を使って、事前準備をしてからインポートする
次に、Excelの「データの取得と変換」(Power Query)機能を使って、複数の区切り文字を含むデータをワークシートにインポートする方法を紹介します。ただし、この方法ではインポート前にデータの下準備が必要です。
データセットを準備する
「データの取得と変換」機能で正しく処理するには、複数の区切り文字を1種類に統一しておく必要があります。今回のデータセットでは、すべてのセミコロンをカンマに置き換えます。具体的な手順は以下の通りです。
- 元のテキストファイルのコピーを作成し、SampleDataModified.txtという名前で保存します。
- ファイルを開いてCtrl + Hを押します。
- 置換ウィンドウの「検索する文字列」にセミコロン(;)、「置換後の文字列」にカンマ(,)を入力します。
- 「すべて置換」ボタンをクリックします。

- これで、データセットの区切り文字はカンマのみになりました。

テキストファイルをインポートする
修正済みのテキストファイルを「データの取得と変換」機能で読み込む手順は以下の通りです。
- 「データ」タブを開きます。
- 「データの取得」ボタンをクリックします。
- 「ファイルから」にマウスを合わせます。
- 「テキスト/CSVから」を選択します。

- SampleTextModified.txtの保存場所へ移動し、ファイルを選択してインポートします。

- プレビュー画面で、データセットがテーブル形式で表示されます。
- 「読み込み」ボタンをクリックします。

インポート結果

関連記事:テキストファイルからExcelにデータをインポートする方法(3つの方法)
あわせて読みたい記事
- VBAを使ってExcelからWordへ自動的にデータをインポートする方法(2つの方法)
- Excel数式でリストからデータを抽出する方法(5つの方法)
- Excelマクロ:複数のExcelファイルからデータを抽出する方法(4つの方法)
- Excelで日付から年を抽出する方法(3つの方法)
- Excelで日付から月を抽出する方法(5つの簡単な方法)
方法3:VBAコードを実行してインポートする
3つ目は、VBAのSplit関数とInStr関数を組み合わせたコードで、テキストファイルをワークシートにインポートする方法です。まず、それぞれの関数について簡単に説明します。
VBA Split関数:Split関数は、文字列を部分文字列に分割するための関数です。ゼロから始まる一次元配列を返し、配列の各要素は、指定した区切り文字で分割された部分文字列になります。構文は以下の通りです。
Split(expression, [delimiter, [limit, [compare]]])
引数の説明:
expression – 必須の引数です。部分文字列と区切り文字を含む元の文字列を指定します。空の文字列を渡すと、関数は空の配列を返します。
delimiter – 文字列を分割するために使う区切り文字です。省略した場合は半角スペースが区切り文字として使われ、空の文字列("")を指定すると元の文字列がそのまま返されます。
limit – 返す部分文字列の最大数を指定します。省略すると、すべての部分文字列が返されます。
compare – 比較モードを指定します。vbBinaryCompare(大文字小文字を区別)またはvbTextCompare(大文字小文字を区別しない)を選択できます。
VBA InStr関数:InStr関数は、指定した位置から検索を始めて、ある文字列の中から特定の文字列を検索する関数です。構文は以下の通りです。
InStr([start], string1, string2, [compare])
引数の説明:
[start] – 検索を開始する位置です。省略した場合のデフォルト値は1です。
string1 – 検索対象となる文字列です。
string2 – 検索したい特定の文字列です。
[compare] – 比較の種類です。デフォルトはバイナリ比較(Binary Comparison)です。
実際にVBAでテキストファイルをインポートするには、VBE(Visual Basic Editor)を開いてコードを記述します。以下の手順でエディターを開きましょう。
- リボンの「開発」タブをクリックします。
- 「Visual Basic」を選択します。

- Visual Basic Editorのウィンドウで、「挿入」メニューから「標準モジュール」を選択します。

次に、エディターにコードを貼り付けてF5キーを押して実行します。以下のコードは、VBAのReplace関数を使って、テキストファイル内のセミコロンをカンマに置き換えてからインポートします。
Sub ImportTextFileDatatoExcel()
Dim fileLocation As String, textData As String
Dim rowNum As Long
folderLocation = "D:\Exceldemy"
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderLocation)
rowNum = 1
Close #1
For Each textFile In folder.Files
fileLocation = folder & "\" & textFile.Name
Open fileLocation For Input As #1
Do While Not EOF(1)
Line Input #1, textData
textData = Replace(textData, ";", ",")
If InStr(textData, ",") = 0 Then
Cells(rowNum, 1) = textData
Else
tArray = Split(textData, ",")
nColumn = 1
For Each element In tArray
Cells(rowNum, nColumn) = element
nColumn = nColumn + 1
Next element
End If
rowNum = rowNum + 1
Loop
Close #1
Next textFile
End Sub
上記コードのfolderLocationには、テキストファイルが保存されているご自身のフォルダーのパスを入力してください。以下のスクリーンショットは、この例で使用しているフォルダーの場所です。

インポート結果

関連記事:区切り文字付きでExcelをテキストファイルに変換する方法(2つの簡単なアプローチ)
注意点
- 今回紹介したVBAコードは、指定フォルダー内の複数のテキストファイルをまとめて効率的に処理できます。
- 指定した区切り文字が元の文字列に存在しない場合、Split関数は文字列をそのまま返します。
- Split関数のcompare引数を省略した場合、デフォルト値はvbBinaryCompareになります。
- InStrRev関数は、部分文字列が見つからなかった場合に0を返します。
まとめ
今回は、複数の区切り文字を含むテキストファイルのデータをExcelにインポートする3つの方法を、具体例とともに解説しました。レガシーウィザードなら細かい設定が可能、Power Queryなら再利用性が高い、VBAなら大量のファイルを一括処理できるなど、それぞれに特徴があります。用途に合わせて使い分けてみてください。ご質問やご意見があれば、ぜひコメント欄でお聞かせください。
関連記事
- Excelでフィルター済みのデータを別シートに抽出する方法(4つの方法)
- Excelシートからデータを抽出する方法(6つの効果的な方法)
- 画像からExcelへデータを抽出する方法(クイックステップ付き)
- メモ帳のデータを列ごとにExcelへ変換する方法(5つの方法)
- Excel VBA:Webサイトから自動的にデータを取得する方法(2つの方法)
- テキストファイルをExcelに変換するVBAコード(7つの方法)
-
Excelで複数の区切り記号を含むテキストを列に分割する方法6選
テキストを列に変換する作業は、日々の業務で非常によく発生します。さまざまな場面でテキストを複数の列に分割する必要があり、その際に活躍するのがMicrosoft Excelです。本記事では、Excelで複数の区切り記号を使ってテキストを列に分割する方法について、詳細な手順を交えてわかりやすく解説します。 Excelで複数の区切り記号を使ってテキストを列に分割する6つの方法 今回は、セルB4:B13に入力されたベストセラーリストというデータセットを例に説明します。このデータには書籍名・著者名・ジャンルが1つのセルにまとめられており、それぞれを別々の列に分割することを目標とします。それでは、各方法を
-
Excelファイルをカンマ区切りのCSV形式で保存する3つの確実な方法
CSV(Comma-Separated Values:カンマ区切り値)ファイルは、値をカンマで区切ったテキストファイルです。データ分析のさまざまな場面で活躍する便利な形式ですが、用途によってはExcelファイルをCSVファイルとして保存し直す必要が生じることもあります。本記事では、Excelファイルをカンマ区切りのCSVとして保存するための、実用的な3つの方法を詳しく解説します。 練習用に、以下からワークブックをダウンロードできます。 CSVとは? CSVとは「Comma-Separated Values(カンマ区切り値)」の略で、各値をテキスト文字列として保存し、値同士をカンマで区切る一般的