Excelでベクトル/単一行または列を行列に変換するにはどうすればよいですか?
Excelでは、指定された行数と列数を持つ行列または表形式に「ベクトル」と呼ばれる単一行または列を変換する必要がある状況に遭遇することがあります。手動で各値をグリッドにコピーして貼り付けるのは、特に大規模なデータセットの場合、面倒でエラーが発生しやすい作業です。この記事では、効率を向上させ、ミスのリスクを減らすために、ベクトル(単一行または列)を迅速に行列に変換するためのいくつかの実用的な方法を紹介します。各方法は異なるシナリオに適しているため、データ変換や表示に最適な方法を選択できます。
➤ 数式を使用してベクトル/単一行または列を行列に変換する
➤ Kutools for Excelを使用してベクトル/単一行または列を行列に変換する
➤ VBAコードを使用してベクトル/単一行または列を行列に変換する
数式を使用してベクトル/単一行または列を行列に変換する
Excelの数式は、単一行または列を行列レイアウトに変換するための柔軟で動的な方法を提供します。これは、ソースデータが変更された場合に行列が自動的に更新されるようにしたい場合に特に便利です。ただし、セル参照と行列サイズに注意してください。元のデータに空白セルがあると0が返されることがあります。
🔹 単一列を行列に変換する:
データがC1:C20にあると仮定し、それを4行×5列(4×5)の行列に変換したい場合、以下の手順に従ってください。
ステップ1: 行列を開始したい左上のセル(例:F1)に次の数式を入力し、Enterキーを押します。
=OFFSET($C$1:$C$20,COLUMN()-COLUMN($F$1)+((ROW()-ROW($F$1))*(ROWS($C$1:$C$20)/4)),0,1,1)
この数式は、列データを参照し、行列形式に再配置します。
数式の説明:
- $C$1:$C$20: ソース列データ。
- $F$1: 行列の左上開始セル。
- ROWS($C$1:$C$20)/4: 「4」は行列の行数です。必要に応じて調整してください。
ステップ2: フィルハンドルを4行分下にドラッグし、次に5列分右にドラッグして行列を完成させます。
🔹 単一行を行列に変換する:
A1:T1のような行を5行×4列(5×4)の行列に変換するには:
ステップ1: 開始セル(例:E4)に以下を入力します:
=OFFSET($A$1:$T$1,0,COLUMN()-COLUMN($E$4)+(ROW()-ROW($E$4))*(COLUMNS($A$1:$T$1)/5),1,1)
ステップ2: 次に5行分下にドラッグし、4列分右にドラッグして行列レイアウトを作成します。
数式の説明:
- $A$1:$T$1: ソース行データ。
- $E$4: 行列の開始セル。
- COLUMNS($A$1:$T$1)/5: 「5」は行列の行数です。
⚠️ 注意:
- データポイントの数が行×列(例:4×5 = 20)に正確に一致することを確認してください。
- ソース範囲に空白セルがある場合、行列にはその場所に0が表示されることがあります。
- この数式方式は動的ですが、初心者には直感的ではない場合があります。参照が一貫していることを確認してください。
Kutools for Excelを使用してベクトル/単一行または列を行列に変換する
数式アプローチが複雑すぎる、または時間がかかりすぎる場合—特にExcel関数に不慣れなユーザーまたは大規模なデータセットを扱う場合—Kutools for Excelは非常に簡単な解決策を提供します。Transform Range機能を使用すると、数式を一切書かずに視覚インターフェースを通じて単一行または列を行列(またはその逆)に変換できます。この方法は、効率性と使いやすさを求めるユーザーに理想的です。
ステップ1: 行列に変換したい行または列の範囲を選択します。
ステップ2: ExcelリボンからKutools > 範囲 > Transform Rangeをクリックします。
ステップ3: Transform Rangeダイアログで:
- 横方向の行を変換する場合はSingle row to range、縦方向の列を変換する場合はSingle column to rangeを選択します。
- Rows per recordのFixed valueボックスに、結果として得られる行列の列数を入力します。たとえば、5列の行列を作成する場合は「5」を入力します。
ステップ4: OKをクリックします。プロンプトが表示されたら、行列の結果を出力したい空白セルを選択します。
ステップ5: 再びOKをクリックします。これで元の行または列が瞬時に行列形式に再配置されます。
Kutoolsを使用することで、複雑な数式や手動でのフィル操作が不要になり、スピード、シンプルさ、正確さを重視するユーザーにとって理想的な選択肢となります。この方法にはKutoolsアドインが必要であり、すべての環境で利用できない場合があることに注意してください。
VBAコードを使用してベクトル/単一行または列を行列に変換する
より高度な柔軟性が必要な場合、プロセスを自動化したい場合、または大規模なデータセットを処理したい場合、VBAマクロは優れた選択肢です。カスタム行列サイズに対応し、繰り返しの手動操作を削減し、数千件のエントリでも効率的に動作します。このアプローチは、外部アドインに依存せずに、定期的なレポート、一括データ再構築、または再利用可能なExcelツールの作成に理想的です。
⚠ 重要: このスクリプトを実行する前に、必ずワークブックを保存し、マクロを有効にしてください。データサイズが行列の寸法に均等に収まらない場合、余分なセルはデータ損失を避けるために空白のままになります。
ステップ1: Alt + F11を押してMicrosoft Visual Basic for Applicationsエディタを開きます。挿入 → モジュールをクリックし、以下のコードを貼り付けます:
Sub VectorToMatrix()
Dim vecRange As Range
Dim outCell As Range
Dim totalElements As Long
Dim matrixRows As Long, matrixCols As Long
Dim i As Long, j As Long, idx As Long
Dim xTitleId
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set vecRange = Application.InputBox("Select the vector (single row or column) to convert:", xTitleId, Type:=8)
If vecRange Is Nothing Then Exit Sub
matrixRows = Application.InputBox("Enter number of rows for the matrix:", xTitleId, , , , , , 1)
If matrixRows <= 0 Then Exit Sub
matrixCols = Application.InputBox("Enter number of columns for the matrix:", xTitleId, , , , , , 1)
If matrixCols <= 0 Then Exit Sub
totalElements = vecRange.Cells.Count
If matrixRows * matrixCols < totalElements Then
MsgBox "Matrix size does not fit all values from vector!", vbExclamation
Exit Sub
End If
Set outCell = Application.InputBox("Select the top-left cell for output matrix:", xTitleId, Type:=8)
If outCell Is Nothing Then Exit Sub
idx = 1
For i = 1 To matrixRows
For j = 1 To matrixCols
If idx <= totalElements Then
outCell.Cells(i, j).Value = vecRange.Cells(idx).Value
idx = idx + 1
Else
outCell.Cells(i, j).Value = ""
End If
Next j
Next i
End Sub
ステップ2: コードを実行するには、マクロ内をクリックして F5 を押すか、 実行 ボタンをクリックします。その後、指示に従います:
- ベクトル範囲を選択 — 変換したい単一行または列を選択します。
- 行列の行数と列数を入力します。
- 行列の左上の出力セルを選択します。
確認後、マクロは選択したベクトルからターゲット行列に自動的に値を入力します。行列サイズが小さすぎる場合、スクリプトは変更を行う前に中止され、警告が表示されます。
なぜVBAを選ぶのか? それはバッチ処理、再利用可能なロジック、および数式やアドインでは面倒なデータ集約型タスクに理想的です。頻繁に異なるサイズや多くのシート間でベクトルを行列レイアウトに変換する場合、この方法は時間と労力を節約します。
トラブルシューティング: 入力が単一行または列であることを確認し、行列の行×列の積がソース値の数以上であることを確認してください。このマクロは直接シートに書き込むため、常に実行前に保存してください。
関連記事:
Excelで行列をベクトルまたは単一列に変換するにはどうすればよいですか?
最高のオフィス業務効率化ツール
🤖 | 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日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得