Excelでセルの内容を複数の行に分割する方法(シナリオとツールの比較)
このガイドでは、Excelのセルの内容を複数の行に分割する方法を紹介します。主に2つの一般的なシナリオを解説します。1つは対象セルだけを分割し(他の列は無視)、もう1つはセルを分割しつつ、その行内の他のデータも保持する方法です。どちらのケースにも対応できるよう、Excel標準機能からPower Query、VBA、またはサードパーティ製プラグインまで、さまざまな方法を提供します。
よくある2つの分割パターン
データの分割方法は、他の列を保持するかどうかによってさまざまです。ここでは主な2つのアプローチを定義するので、ご自身の目的に合ったものを選択してください。
シナリオ1:対象セルのみを分割(他の列は無視)
時には、単一セルの値だけを注視したい場合があります。見やすくするために、それらを行に展開し、同じ行の他の関連データを複製せずに分割したい場合です。
例
A,B,C
結果:
A
B
C
使用ケース:他の列が必要ない軽いデータ整理や表示作業に最適です。
シナリオ2:セルを分割し、他の列データも保持
一方で、分割した値ごとに元の行のデータと組み合わせて保持したい場合もあります。これは事実上、1つの行を複数のエントリに展開することになります。
例
USA | A,B,C
結果:
USA | A
USA | B
USA | C
使用ケース:データの正規化。列同士の関係性を保持する必要がある場合に適しています。
- 方法1:Excel標準機能(区切り位置+行/列の入れ替え貼り付け)
- 方法2:TRANSPOS(TEXTSPLIT)関数(Microsoft365)
- 方法3:Power Query- 行の分割と展開(Microsoft2016以降)
- 方法4:Kutoolsプラグイン-クリック操作で分割
- 方法5:VBAスクリプト- 完全なカスタム制御
セルを複数の行に分割する必要があるのはどんな時か?
各手法に入る前に、なぜセルを分割する必要があるかを把握することは重要です。この操作は、データのクリーニングや構造化、可視化ワークフローの一環でよく行われます。
主な活用例:
- 1列に複数の値:タグやID、住所などがまとめて記載されている場合
- ピボットテーブルやグラフ:正規化されたデータ形式の方が扱いやすい場合
- インポートデータのクリーニング:特にCRMのエクスポートやアンケートツールのデータなど
- データ標準化:表をデータベース対応や分析しやすい形に整える場合
セル分割の手順ガイド
どのシナリオに該当するかを確認できたら、次は実際の分割手順を見ていきましょう。標準機能から自動化まで、自分のスキルや利用頻度に合った方法を選択できます。
方法1:Excel標準機能(区切り位置+行/列の入れ替え貼り付け)
これはExcelの標準機能だけを使った、単発処理向けのシンプルな手動手法です。
適しているケース:シナリオ1 対象セルのみを分割(他の列は無視)
手順:
ステップ1.セルを選択します。
ステップ2.「データ」>「区切り位置」を選択します。
ステップ3.「テキストを列に変換ウィザード」で、
「区切り記号付き」を選択して「次へ」をクリックします。
「カンマ」を選択し、「次へ」をクリックします。
出力先のセルを選択し、「完了」をクリックします。
これでセルはカンマで区切られ、複数の列に分割されました。
ステップ4.分割されたセルを選択し、Ctrl + Cでコピーします。貼り付け先のセルを右クリックして「貼り付けオプション」で「行/列の入れ替え」を選びます。
内容が行方向に転記されます。
メリット | デメリット |
|
|
方法2:TRANSPOS(TEXTSPLIT)関数(Microsoft365)
この方法は、区切り文字で分割するTEXTSPLIT関数とTRANSPOSEを組み合わせ、分割した値を即座に縦方向(行単位)に表示します。
適しているケース:シナリオ1 対象セルのみを分割(他の列は無視)
手順:
ステップ1.縦リストを表示したい空白セルに数式を入力します。
数式例:セルA1が行に分割したい対象セルの場合
この場合の数式は
ステップ2.Enterキーを押します。
メリット | デメリット |
|
|
方法3:Power Query- 行の分割と展開(Microsoft2016以降)
Power Queryは、構造化データや繰り返し処理に最適です。パワフルで一括変換や更新にも対応しています。
適しているケース:シナリオ1(対象セルのみ分割)、シナリオ2(セルを分割し他の列データも保持)の両方に対応
手順:シナリオ1(対象セルのみ分割)例
ステップ1.対象範囲を選択し、「データ」>「データの取得と変換」>「テーブルまたは範囲から」をクリックします。
an
ステップ2.テーブルの作成で「OK」をクリック。(範囲にヘッダーがある場合、「先頭行をテーブルの見出しとして使用する」にチェック)
ステップ3.Power Queryエディターで「区切り記号で列を分割」を選択。
ステップ4.区切り記号を選択または入力し、「詳細」でオプションを表示、「行に分割」を選び、OKをクリックします。
ステップ5.「閉じて読み込む」または「閉じて別の場所に読み込む」を選択します。
閉じて読み込む
機能:クエリ結果をデフォルトの場所に直接読み込みます。
閉じて別の場所に読み込む…
機能:保存場所や方法を柔軟に選択可能。レポートや大規模データセットの定期処理に最適。
シナリオ2(セル分割時に他の列を保持)でも手順は同様です。結果を確認しましょう。
対象範囲:
結果:
注意:Power Queryエディターでは、分割したい列だけを選択し、「区切り記号で列を分割」をクリックしてください。
メリット | デメリット |
|
|
ヒント:トリムやクリーン手順を追加して、空白や特殊文字を修正できます。
方法4:Kutoolsプラグイン-クリック操作で分割
頻繁にセル分割を行いたい、もしくはGUIベースのツールを好む方には、Kutoolsが非常に便利です。複雑な操作も数クリックで完結できます。
適しているケース:シナリオ1(対象セルのみ分割)、シナリオ2(セルを分割し他の列データも保持)の両方に対応
手順:シナリオ1(対象セルのみ分割)
ステップ1.対象セルを選択します。
ステップ2.Kutools > 結合・分割 > セルの分割 を選択します。
ステップ3.「行に分割」を選び、区切り文字を指定してOKをクリックします。
ステップ4.出力先セルを選び、OKをクリックします。
手順:シナリオ2(セルを分割し他の列データも保持)
ステップ1.行に分割したい列を選択します。
ステップ2.Kutools > 結合・分割 > 複数行に分割する を選択します。
ステップ3.区切り文字を設定し、OKをクリックします。
シナリオ2(セル分割時に他の列を保持)でも同様の手順です。結果を見てみましょう。
対象範囲:
結果:
メリット | デメリット |
|
|
注意:30日間の試用版では全機能をテストできます。
方法5:VBAスクリプト- 完全なカスタム制御
プログラミングの知識がある利用者は、VBAで最大限の柔軟性を実現できます。レイアウトや業務ルールに合わせてスクリプトを自由にカスタマイズ可能です。
適しているケース:シナリオ1(対象セルのみ分割)、シナリオ2(セルを分割し他の列データも保持)の両方に対応
手順:
ステップ1.Alt+F11でVBAエディタを開きます。
ステップ2.「挿入」>「モジュール」をクリックします。
ステップ3.下記のVBAコードをコピー&ペーストします。
シナリオ1 対象セルのみ分割
'Update by Extendoffice
Sub SplitCellToRows_Simple()
Dim InputCell As Range
Dim Values As Variant
Dim i As Long
Set InputCell = Range("A1") ' change A1 to your target cell
Values = Split(InputCell.Value, ",")
For i = 0 To UBound(Values)
InputCell.Offset(i, 1).Value = Trim(Values(i))
Next i
End Sub
シナリオ2 セルを分割し他の列データも保持
'Update by Extendoffice
Sub SplitRowsWithOtherColumns()
Dim ws As Worksheet
Dim LastRow As Long, i As Long
Dim arr As Variant, j As Long
Dim SplitVals As Variant
Dim CurrentRow As Long
Set ws = ActiveSheet
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = LastRow To 2 Step -1
If InStr(ws.Cells(i, 2).Value, ",") > 0 Then
SplitVals = Split(ws.Cells(i, 2).Value, ",")
For j = UBound(SplitVals) To 1 Step -1
ws.Rows(i + 1).Insert Shift:=xlDown
ws.Cells(i + 1, 1).Value = ws.Cells(i, 1).Value
ws.Cells(i + 1, 2).Value = Trim(SplitVals(j))
Next j
ws.Cells(i, 2).Value = Trim(SplitVals(0))
End If
Next i
End Sub
注意:このVBAは、A列とB列にデータがあり、B列の値を分割する場合の設定例です。
デメリット |
|
💡ヒント:
- マクロを実行する前に必ずデータをバックアップしてください。
- スクリプト内の","を実際の区切り文字(例:「;」や「|」など)に置換して、データ形式に合わせましょう。
よくある問題点
- 空白の行や列:末尾の区切り記号や隠れたスペースが原因の場合が多いです。
- 結合セルエラー:開始前にセルの結合を解除してください。
- Power Queryが更新されない:元データ変更後は「更新」を忘れずに。
- 区切り記号の間違い:カンマとセミコロンの取り違えで結果に影響が出ます。
関連する記事:
最高のオフィス生産性ツール
🤖 | Kutools AI Aide:データ分析を革新:インテリジェント実行 | コード生成 | カスタム数式の作成 | データを分析してグラフを生成 | Kutools Functions を呼び出す… |
人気機能:重複の検索・ハイライト・マーキング | 空白行を削除 | データを失わず列やセルを統合 | 丸める ... | |
スーパーLOOKUP:複数条件VLOOKUP | 複数値VLOOKUP | 複数シートの検索 | ファジーマッチ .... | |
高度なドロップダウンリスト:すばやくドロップダウンリストを作成 | 依存型ドロップダウンリスト | 複数選択ドロップダウンリスト .... | |
列の管理:特定数の列を追加 | 列を移動 | 非表示列の表示状態を切り替え | 範囲と列の比較 ... | |
注目機能:グリッドフォーカス | デザインビュー | 強化された数式バー | ワークブック&ワークシートの管理 | オートテキスト ライブラリ (Auto Text) | 日付ピッカー | データの統合 | セルの暗号化/復号化 | リスト送信で電子メールを送信 | スーパーフィルター | 特殊フィルタ(太字/斜体/取り消し線でフィルタ...) | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など) | 50 種以上のグラフ タイプ(ガントチャートなど) | 40を超える実用的な 数式(誕生日に基づいて年齢を計算する、など) | 19種の 挿入ツール(QRコードの挿入、パスから画像の挿入など) | 12種類の 変換ツール(単語に変換する、通貨変換など) | 7つの 結合&分割ツール(高度な行のマージ、セルの分割など) | ...さらに多数 |
Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...
Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます
- Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
- 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
- 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!