Excelで1行を複数の列や行に変換するにはどうすればよいですか?
Excelでは、ユーザーはしばしば、長い1行のデータをより読みやすい形式に再編成する必要がある状況に遭遇します。この変換は、インポートされた、エクスポートされた、または手動で作成されたデータが横並びのレイアウトで到着し、表形式で分析、処理、または表示する必要がある場合によく行われます。例えば、1つの行にリストされたデータセットがあり、それを以下に示すようにグリッド構造に再フォーマットしたい場合があります。
データ行を構造化された表形式に変換することにはいくつかの利点があります:可読性が向上し、データ分析が容易になり、フィルタリングやグラフ化などの幅広いExcelツールを使用できるようになります。特定の要件に応じて、Excelはこの変換を実現するための複数の方法を提供しています - 組み込み機能や数式から専用のアドインやVBAコードによる自動化まで様々です。この記事では、異なるシナリオやユーザーの好みに適したいくつかの実践的なアプローチを紹介します。
目次:
- 「テキストから列」機能と「貼り付け 転置」関数を使用してセルの行を複数の列や行に変換する
- 「範囲の変換」機能を使用して1行を複数の列や行に変換する
- ExcelのINDEX関数を使用して1行を複数の列や行に変換する
- VBAコードを使用して1行を複数の列や行に変換する
「テキストから列」機能と「貼り付け 転置」関数を使用してセルの行を複数の列や行に変換する
Excelでは、「テキストから列」と「貼り付け特別(転置)」機能が基本的なデータ再編成のために提供されています。これらのオプションは、データが単一のセルに限定されている場合や簡単な再構成が必要な場合に役立ちます。
1. 変換したいセルを選択し、[データ] > [テキストから列] をクリックします。スクリーンショットをご覧ください:
2. 表示されるダイアログで、まず「区切り文字」オプションを選択し、次に「次へ」をクリックします。次のステップでは、「区切り文字」セクションでスペース(またはデータが使用している実際の区切り文字)を選択します。スクリーンショットをご覧ください:
3. 「完了」をクリックします。指定された区切り文字に基づいて、単一のセルが複数の列に分割されます。可視性を向上させるために列幅を調整すると良いでしょう。スクリーンショットをご覧ください:
![]() |
![]() |
![]() |
注:それらの列の値をさらに複数の行に変換したい場合:
- 新しい列の値を選択し、Ctrl + Cを押してコピーします。
- 転置されたデータを開始したいセルを右クリックし、「貼り付け特別」 > 「転置」を選択します。スクリーンショットをご覧ください:
![]() |
![]() |
![]() |
このアプローチはシンプルな変換や管理可能な量の場合に適しています。しかし、これは初期データが単一のセル内にある場合に最適です。もし単一行(単一セルではなく)のデータを複数の列や行に再配置する必要がある場合、これらの機能だけでは十分ではなく、さらなる手動での調整が必要となります。より高度なニーズには、次の解決策に進んでください。
「範囲の変換」機能を使用して1行を複数の列や行に変換する
Kutools for Excelがインストールされている場合、Transform Rangeツールを利用できます。この機能により、単一行または単一列のデータレイアウトを、数回のクリックで複数行や複数列の範囲に直接変換することができます。特に大規模なデータセットを扱う際に便利で、手動でのコピー作業や複雑な数式の必要性を最小限に抑えます。
Kutools for Excelを無料でインストール 後、以下の手順に従ってください:
1. 変換したい単一行を選択し、[Kutools] > [範囲] > [範囲の変換] に移動します。スクリーンショットをご覧ください:
2. [範囲の変換] ダイアログで、「単一行を範囲に変換」を選択します。「レコードごとの列」エリアで、結果の各行に含める列数を指定します。これに基づき、レイアウトやレポートの要件に合わせて設定できます。スクリーンショットをご覧ください:
ヒント:
- 「固定値」の列は、各新しい行が保持する項目の数を決定します。例えば、18個の値を持つ単一行があり、レコードごとの列を6に設定すると、データは3行×6列の形に再編成されます。
- 行の長さが均等に割り切れない場合、最後の行は指定された列より少ないことがあります。
3. [OK] をクリックします。ダイアログが変換結果の出力先セルを選択するよう促します。データを上書きしないように、元の範囲外のセルを選択してください。
4. 再度 [OK] をクリックします。これで、あなたの単一行は整然と整理された複数行・複数列の範囲に変換されます。結果は以下の通りです:
注意:
- この機能は逆にも動作します — 必要に応じて複数列/行の範囲を単一行または単一列に圧縮することも可能です。詳細はここをクリックして「範囲の変換」について確認してください。
- データのバックアップを取るか、コピー上で操作することを確実に行ってください。特にソースまたは出力先の範囲が重複する可能性がある場合です。
Kutools for Excel - 必要なツールを300以上搭載し、Excelの機能を大幅に強化します。永久に無料で利用できるAI機能もお楽しみください!今すぐ入手
ExcelのINDEX関数を使用して1行を複数の列や行に変換する
アドインを使用せず、ワークシート関数で自動化することを好むユーザーにとって理想的な数式ベースのアプローチを探している場合、ExcelのINDEX関数(多くの場合、SEQUENCE関数と組み合わせて使用され、Microsoft 365以降で利用可能)を使えば、1行を2次元の範囲に効率的に再形成できます。
この方法は、元のデータと出力の間に動的なリンクを維持するのに役立ちます:元の行に加えられた変更は、自動的に行や列に反映されます。
シナリオ例:データがA1からR1までの行1にある(合計18項目)とし、それを6列3行に配置したい場合。
1. 出力範囲の左上のセルを選択します(例:セルA3)。
2. セルA3に次の数式を入力します:
=INDEX($A$1:$R$1, SEQUENCE(3,6))
パラメータ説明:範囲 $A$1:$R$1
は元の行です。6
は出力の各行の列数です。必要に応じて調整してください。
これにより、3x6のグリッドが自動的に埋められます(動的配列に対応するExcelのみ動作します)。
制限事項:非常に大きなデータセット、複雑な再配置の必要性、またはカスタム順序が必要な場合、数式ベースのアプローチは煩雑になったり管理が難しくなる可能性があります。そのような場合は、VBAによる自動化(下記参照)を検討してください。
VBAコードを使用して1行を複数の列や行に変換する
完全な自動化とより高い制御を求める場合、VBAマクロを使用して1行をカスタムサイズの列や行のグリッドに変換できます。このアプローチは繰り返し作業や大規模なデータセットに効率的であり、異なる出力サイズに簡単にカスタマイズできます。
典型的な使用例:変動する長さの1行があり、定義された列数(例:6つの値ごとに新しい行)に分割し、手動または数式ベースの変換を避けたい場合。
手順:
1. Excelを開き、Alt + F11を押してVBAエディタを起動します。
2. VBAエディタで、[挿入] > [モジュール] をクリックし、以下のコードをモジュールウィンドウに貼り付けます:
Sub RowToMultiRowCol()
Dim inputRng As Range
Dim outputCell As Range
Dim nCols As Integer
Dim nData As Integer
Dim i As Integer
Dim r As Integer
Dim c As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set inputRng = Application.InputBox("Select the single row to convert", xTitleId, "", Type:=8)
Set outputCell = Application.InputBox("Select the top-left cell for the result", xTitleId, "", Type:=8)
nCols = Application.InputBox("Number of columns per row:", xTitleId, "6", Type:=1)
On Error GoTo 0
If inputRng Is Nothing Or outputCell Is Nothing Or nCols <= 0 Then Exit Sub
nData = inputRng.Columns.Count
For i = 1 To nData
r = Int((i - 1) / nCols)
c = ((i - 1) Mod nCols)
outputCell.Offset(r, c).Value = inputRng.Cells(1, i).Value
Next i
End Sub
3. VBAエディタを閉じます。Excelで、[開発ツール] > [マクロ] に移動し、RowToMultiRowColを選択して[実行] をクリックします。
4. マクロは以下を促します:
- 変換する単一行の範囲を選択します。
- 出力を表示したい左上のセルを選択します(入力範囲と重複しないことを確認してください)。
- 各行の列数を入力します(例:各6列ごとに複数行に配置する場合は6)。
マクロは迅速かつ効率的に再配置されたデータで出力領域を埋めます。
利点:高速なワンクリック操作と柔軟な出力形状の定義が可能です。複雑なシナリオ、大規模なデータセット、頻繁な使用が必要な場合に適しています。
ヒント:VBAアクションは元に戻せないため、常にマクロを実行する前にブックを保存してください。
デモ:範囲の転置
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパーLOOKUP:複数条件でのVLookup|複数値でのVLookup|複数シートの検索|ファジーマッチ…… | |
高度なドロップダウンリスト:ドロップダウンリストを素早く作成|連動ドロップダウンリスト|複数選択ドロップダウンリスト…… | |
列マネージャー:指定した数の列を追加 |列の移動 |非表示列の表示/非表示の切替| 範囲&列の比較…… | |
注目の機能:グリッドフォーカス|デザインビュー|強化された数式バー|ワークブック&ワークシートの管理|オートテキスト ライブラリ|日付ピッカー|データの統合 |セルの暗号化/復号化|リストで電子メールを送信|スーパーフィルター|特殊フィルタ(太字/斜体/取り消し線などをフィルター)…… | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など)|50種類以上のグラフ(ガントチャートなど)|40種類以上の便利な数式(誕生日に基づいて年齢を計算するなど)|19 種類の挿入ツール(QRコードの挿入、パスから画像の挿入など)|12 種類の変換ツール(単語に変換する、通貨変換など)|7種の統合&分割ツール(高度な行のマージ、セルの分割など)|… その他多数 |
Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...
Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に
- Word、Excel、PowerPointでタブによる編集・閲覧を実現。
- 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
- 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!
全てのKutoolsアドインを一つのインストーラーで
Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。





- オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得