Excelで並び替えをするとき、「列を基準にデータを並べ替えたい」というケースは多いですが、それとは逆に行そのものを左右方向に並び替えたいという場面もあります。
また「行全体を一緒に動かしたい」「並び替えたら隣の列がずれてしまった」「行が連動しない」といったトラブルも、Excelを使っていると必ず遭遇する悩みのひとつです。
本記事では、Excelで行ごとの並び替えをする方法について、行全体を連動させる設定・データがずれない操作・左右方向(列方向)への並び替えまで、実務で役立つ知識を幅広く解説します。
「並び替えるたびに行がバラバラになってしまう」「特定の行だけ動かしたい」「列を基準に行を並び替えたい」といった疑問にもお答えします。
サンプルデータと操作イメージ図を使いながら丁寧に説明しますので、ぜひ最後までご覧ください。
Excelの行ごとの並び替えは「行全体を連動させる」設定が重要
Excelで行を並び替えるとき、最も大切な考え方は「1行分のデータをひとつのかたまりとして扱い、行全体を一緒に移動させる」という点です。
たとえば「商品名・カテゴリ・単価・在庫数・売上金額」が1行にまとまっているとき、単価の昇順で並び替えをしても商品名や在庫数がバラバラにならず、その行全体が一緒に移動する状態が理想的な並び替えです。
以下のサンプルデータを使って、行ごとの並び替えの基本から応用まで解説します。
| 行 | A列:商品名 | B列:カテゴリ | C列:単価(円) | D列:在庫数 | E列:売上金額(円) |
|---|---|---|---|---|---|
| 1 | 商品名 | カテゴリ | 単価(円) | 在庫数 | 売上金額(円) |
| 2 | 桜餅 | 和菓子 | 180 | 25 | 4500 |
| 3 | マシュマロ | 洋菓子 | 120 | 50 | 6000 |
| 4 | 柏餅 | 和菓子 | 200 | 0 | 0 |
| 5 | チョコ | 洋菓子 | 350 | 8 | 2800 |
| 6 | アボカド | 野菜・果物 | 280 | 15 | 4200 |
| 7 | カボチャ | 野菜・果物 | 150 | 30 | 4500 |
| 8 | マグロ | 鮮魚 | 500 | 3 | 1500 |
1行目はヘッダー行で、2行目以降に商品データが入力されています。
このサンプルを使って、行全体が連動する並び替えの仕組みと操作手順を確認していきましょう。
| 商品名 | 単価 | 在庫 |
|---|---|---|
| 桜餅 | 180 | 25 |
| マシュマロ | 120 | 50 |
| 柏餅 | 200 | 0 |
| チョコ | 350 | 8 |
| アボカド | 280 | 15 |
| カボチャ | 150 | 30 |
| マグロ | 500 | 3 |
| 商品名 | 単価 | 在庫 |
|---|---|---|
| マシュマロ | 120 | 50 |
| カボチャ | 150 | 30 |
| 桜餅 | 180 | 25 |
| 柏餅 | 200 | 0 |
| アボカド | 280 | 15 |
| チョコ | 350 | 8 |
| マグロ | 500 | 3 |
行全体が連動する並び替えの基本的な仕組み
Excelの並び替えは、デフォルトで「基準とした列の値を並べ替えながら、同じ行にある他の列のデータも一緒に移動する」という動作をします。
つまり、C列の単価を基準に昇順で並び替えると、C列の値の順番が変わるのと同時に、A列の商品名・B列のカテゴリ・D列の在庫数・E列の売上金額も同じ行のかたまりとして一緒に移動します。
この動作が正常に行われていれば「マシュマロ・120円・50個・6000円」というデータのセットは、どの順番に並び替えられても行内の対応関係が崩れません。
この連動が崩れる主な原因は、前記事でも解説した「1列だけ選択して現在の選択範囲で並び替える」という操作ミスや、結合セル・空白行の存在です。
行全体を確実に連動させるための正しい操作手順
行全体を連動させて確実に並び替えるための正しい手順を確認しましょう。
まず、データ範囲内のどこか1つのセルをクリックします(範囲全体を選択する必要はありません)。
次に「データ」タブの「並び替え」ボタンをクリックしてダイアログを開きます。
「列」のプルダウンから基準にしたい列(例:単価(円))を選び、「順序」で昇順か降順を選択してOKをクリックします。
この手順で操作すれば、Excelがデータ範囲全体を自動認識して行全体が連動した並び替えが実行されます。
1列だけを選択した状態でなく、データ範囲内の任意の1セルをアクティブにした状態で操作することが行全体連動のコツです。
行全体の連動を確認する方法と連動が崩れた場合の対処
並び替え後に行全体が正しく連動したかを確認するには、1行分のデータの内容が矛盾なく対応しているかを確認します。
たとえば「マシュマロ・単価120円・在庫50個・売上6000円」のような整合性が取れているかを確認しましょう。
連動が崩れてしまった場合はCtrl+Zで並び替え前の状態に戻し、原因(結合セル・空白行・列のみ選択)を取り除いてから再実行することが最善策です。
事前に連番列を追加しておいた場合は、その連番列を昇順で並び替えれば元の順番に完全に戻すことができます。
【操作のポイント】行全体を連動させて並び替えるには、データ範囲内の任意の1セルをクリックした状態で「並び替え」ダイアログを開き、プルダウンで基準列を指定するのが最も確実な方法です。1列のみを選択して昇順・降順ボタンを押すのは連動ミスの原因になりやすいため避けましょう。
データがずれない並び替え設定の具体的なポイント
並び替え後に「データがずれた」「行の対応関係が崩れた」と感じる場合、その多くは操作前の準備不足か設定の確認漏れが原因です。
データがずれない並び替えを実現するための具体的なポイントをまとめて解説します。
ずれを防ぐポイント①:結合セルをすべて解除してから並び替える
結合セルが存在するシートで並び替えを実行すると、結合されていないセルだけが動いてデータの対応関係がずれます。
並び替えを実行する前に、シート全体を選択(Ctrl+A)して「ホーム」タブの「セルを結合して中央揃え」→「セル結合の解除」で全結合セルを解除してください。
見た目を整えるための結合は並び替え後に改めて設定するか、「選択範囲内で中央揃え」という結合なしの代替方法に切り替えることを検討しましょう。
「選択範囲内で中央揃え」は、「ホーム」タブ→「セルの書式設定」→「配置」タブ→「水平方向の配置」で「選択範囲内で中央」を選ぶことで設定できます。
ずれを防ぐポイント②:テーブル機能で範囲を固定する
データをExcelのテーブル(Ctrl+T)として設定しておくと、並び替えは常にテーブル全体を対象に実行されます。
テーブル外のセルが誤って並び替え対象に含まれる心配がなくなるため、データがずれるリスクを大幅に低減できます。
テーブルのヘッダーの▼ボタンから直接並び替えができるため、操作の手順も短縮されます。
なお、テーブル内に結合セルは作れないため、テーブル化することで結合セルによるずれの問題も自然と解決されます。
ずれを防ぐポイント③:並び替え後に必ず内容を目視確認する
どんなに注意して並び替えを行っても、意図しない結果になることはゼロではありません。
並び替え実行後は、いくつかの行をピックアップして商品名と数値の対応関係が正しいかを確認する習慣をつけましょう。
特に在庫数が0の行・売上が最大の行・最小の行など、値が特徴的な行を確認すると異常をすばやく発見できます。
VLOOKUP関数やINDEX+MATCH関数を使って元データとの照合チェックを行う方法も、重要な業務では有効な確認手段です。
ずれを防ぐポイント④:並び替え前後でCOUNTA関数でデータ件数を確認する
並び替え前後でデータの件数が変わっていないかを確認することも、データのずれや欠落を発見する方法のひとつです。
=COUNTA(A2:A8)
※A列のデータ件数を数える(ヘッダーを除いた範囲)
並び替え前にこの関数で件数を確認しておき、並び替え後に同じ関数で件数が一致しているかをチェックします。
件数が減っていた場合はデータが削除または非表示になっている可能性があるため、フィルタの状態や非表示行の有無を確認してください。
【操作のポイント】データがずれない並び替えのための4つのポイントは、①結合セルの解除、②テーブル化、③並び替え後の目視確認、④COUNTA関数によるデータ件数チェック、です。特に重要なデータを扱う場合はすべてのポイントを実践するようにしましょう。
Excelで行を左右方向(列方向)に並び替える方法
通常の並び替えは「上から下」の方向(行の順番を変える)ですが、Excelには「左から右」の方向(列の順番を変える)に並び替える機能も用意されています。
これを「列方向の並び替え」または「行を基準にした並び替え」と呼びます。
たとえば、月ごとの売上データが横に並んでいるとき、特定の商品の売上金額の昇順で列を並び替えたい場合などに使います。
キャンセル
行を基準にした左右方向の並び替えの手順
左右方向の並び替えを設定するには、「並び替え」ダイアログ内の「オプション」ボタンをクリックします。
「並び替えオプション」ダイアログが開いたら、「方向」の項目で「行単位で並び替え(左から右)」を選択してOKをクリックします。
すると並び替えダイアログの「列」のプルダウンが「行」に変わり、どの行を基準に列を並び替えるかを指定できるようになります。
たとえばサンプルデータを横方向に展開して月ごとの売上が並んでいる場合、特定の行の数値の昇順で列を並び替える、という操作が実現します。
左右方向の並び替えが使えるシーンと注意点
左右方向(列方向)の並び替えは、横展開された時系列データや比較表の整理に便利な機能です。
たとえば月別の売上を横に並べた表で、売上合計の大きい月から順番に列を並び替えて「売上ランキング順の月別表」を作る、という使い方ができます。
ただし、行方向の並び替えと異なり、ヘッダー列(A列など)も一緒に動いてしまうことがあるため、並び替える範囲を慎重に選択する必要があります。
通常はデータ部分のみを選択(例:B1:G8)して列方向の並び替えを実行し、A列の項目名はそのまま固定しておくのが安全な操作方法です。
また、テーブル形式のデータには列方向の並び替えは適用できないため、通常の範囲として扱う必要があります。
TRANSPOSE関数と組み合わせた行列入れ替えと並び替え
行と列を入れ替えた上で並び替えをしたい場合、TRANSPOSE関数が役立ちます。
=TRANSPOSE(配列)
例:=TRANSPOSE(A1:E8)
※A1:E8の行と列を入れ替えた結果を出力する
TRANSPOSE関数で行列を入れ替えたデータを別の場所に出力し、そのデータに対して通常の列方向の並び替えを実行することで、元データの行列構造を変えずに柔軟な並び替えが実現できます。
Excel 365では動的配列として機能するため、元データが更新されるとTRANSPOSE関数の出力も自動で更新されます。
【操作のポイント】左右方向(列方向)の並び替えは「並び替え」ダイアログ→「オプション」→「行単位で並び替え(左から右)」で設定します。A列など固定したい列は並び替え範囲に含めないよう、範囲選択を慎重に行いましょう。
特定の行だけを並び替える方法と範囲指定の注意点
表全体ではなく特定の行だけを並び替えたい場面もあります。
たとえばヘッダー行や合計行は動かさず、データ行だけを並び替えたい場合などがこれにあたります。
特定の範囲を手動選択して並び替える方法
並び替えたい行の範囲をドラッグで手動選択してから「並び替え」ダイアログを開く方法が基本です。
たとえば2行目から8行目(A2:E8)のみを選択してから並び替えを実行すれば、1行目のヘッダーと9行目以降のデータには影響しません。
このとき、ダイアログ内の「先頭行をデータの見出しとして使用する」チェックのオン・オフを状況に合わせて設定することを忘れずに確認してください。
選択範囲に見出し行が含まれない場合はチェックをオフにし、含まれる場合はチェックをオンにします。
合計行・小計行を除いてデータ行だけを並び替える方法
表の最下行に合計行がある場合、合計行を含めて並び替えると合計行が途中に紛れ込んでしまいます。
対処法は、並び替え前に合計行を別シートや別の場所に一時退避させるか、合計行を除いたデータ範囲(A2:E8など)のみを選択して並び替えを実行することです。
合計行には数式(SUM関数など)が入っていることが多いため、並び替え後に数式の参照先がずれていないかを確認することも大切です。
なお、テーブルの集計行(テーブル機能の集計行オプション)はテーブルの外側に表示されるため、並び替えの対象外になり安全です。
行の移動(ドラッグ)で特定の行だけを手動で並び替える方法
1〜2行程度を手動で移動させたい場合は、行番号をクリックして行全体を選択し、Shiftキーを押しながらドラッグする方法が使えます。
この操作では選択した行を任意の位置に挿入する形で移動でき、他の行のデータを上書きすることなく並び順を変えることができます。
Shiftキーなしでドラッグすると、移動先のデータが上書きされてしまうため必ずShiftキーを使ってください。
大量の行の並び替えには不向きですが、数行程度の微調整には最も手軽な方法です。
| 行 | A列:商品名 | B列:単価 | C列:在庫 | 状態 |
|---|---|---|---|---|
| 1 | 商品名 | 単価 | 在庫 | ヘッダー行 |
| 2 | 桜餅 | 180 | 25 | |
| 3 | マシュマロ ←移動元 | 120 | 50 | 選択中・ドラッグ |
| 4 | 柏餅 | 200 | 0 | |
| 5 | チョコ | 350 | 8 | ←ここに挿入される |
【操作のポイント】合計行・小計行がある場合は、それらを除いたデータ行のみを手動選択して並び替えを実行しましょう。数行の微調整には行番号選択+Shiftキードラッグによる手動移動が便利です。必ずShiftキーを使って上書きを防いでください。
行の並び替えに関連する関数・機能の活用方法
並び替えの操作だけでなく、関数や機能を組み合わせることで、より柔軟で自動化された行の並び替えが実現できます。
実務でよく使われる関数と機能をまとめて確認しましょう。
SORT関数で行を自動的に並び替えて別セルに出力する方法
Excel 365・2021以降では、SORT関数を使って元データを変えずに並び替えた結果を別のセルに出力できます。
=SORT(配列, 並び替えインデックス, 並び替え順序, 並び替え基準)
例:=SORT(A2:E8, 3, 1, FALSE)
※ A2:E8を3列目(単価)の昇順(1)で、行方向(FALSE)に並び替えた結果を出力
この数式を別のセル(例:G2)に入力すると、G2を起点に並び替え結果が自動的にスピル(展開)されて表示されます。
元データ(A2:E8)が変更されると並び替え結果も自動で更新されるため、常に最新の並び替え結果を別の場所に表示したい場合に非常に便利です。
RANK関数で順位をつけて並び替えの参考にする方法
RANK関数を使うと各行のデータに順位をつけることができ、その順位列を基準に並び替えることで「売上ランキング順の表」を作ることができます。
=RANK(数値, 参照, 順序)
例:=RANK(E2, $E$2:$E$8, 0)
※ E2の売上金額が、E2:E8の中で何番目に大きいか(降順)を求める
F列にRANK関数で順位を出力し、F列を基準に並び替えると、売上金額の大きい順に行が並んだランキング表が完成します。
RANK関数は同じ値がある場合に同順位を返し、次の順位をスキップする点(例:1位・1位・3位)に注意が必要です。
同順位を許容しない場合はRANK.EQ関数やRANK.AVG関数との使い分けも検討してください。
LARGE・SMALL関数で特定順位の値を抽出する方法
並び替えではなく「上位3位の売上金額だけを抽出したい」場合には、LARGE関数・SMALL関数が便利です。
=LARGE(配列, 順位) → 上からN番目に大きい値
例:=LARGE($E$2:$E$8, 1) → 売上金額の最大値
=SMALL(配列, 順位) → 下からN番目に小さい値
例:=SMALL($C$2:$C$8, 1) → 単価の最小値
LARGE・SMALL関数は元データを並び替えることなく特定の順位の値を取り出せるため、元の並び順を維持しながら順位の高い値だけを参照したい場合に適しています。
INDEX+MATCH関数と組み合わせることで、上位N位の商品名も引き出すことが可能です。
【操作のポイント】元データを変えずに並び替え結果を別表示したい場合はSORT関数、順位情報を付与したい場合はRANK関数、特定順位の値のみを抽出したい場合はLARGE・SMALL関数と、目的に応じて使い分けましょう。
行の並び替えでよくある疑問と追加のテクニック
行ごとの並び替えについて、実務でよく出てくる疑問や、知っておくと便利な追加テクニックをまとめて解説します。
並び替え後に元の順番に戻す方法(連番列の活用)
並び替えを実行した後で元の順番に戻したい場合、事前に連番列を追加しておくことで完全に元に戻すことができます。
たとえばF列に「1・2・3・4・5・6・7」と連番を入力しておき、並び替え後にF列を昇順で並び替えると元の順番に完全に戻ります。
連番はROW関数を使って自動入力することもできます。
=ROW()-1
※ 2行目のセルに入力すると「1」、3行目では「2」と自動的に連番になる
連番列は並び替え前の準備として必ず追加しておく
ことを習慣にすることで、どんな並び替えミスにも対応できます。
並び替えの結果が毎回変わる「不安定な並び替え」を防ぐ方法
同じ値を持つ行が複数あるとき、Excelの並び替えは同じ値同士の行の順番を一定に保証しない「不安定なソート」になることがあります。
たとえばカテゴリが「和菓子」の桜餅と柏餅を昇順で並べたとき、どちらが先に来るかは実行のたびに変わる可能性があります。
この問題を解決するには、並び替えのレベルを追加して第2・第3のキーを設定し、同じ値同士の並び順を明示的に指定することです。
「カテゴリ昇順→商品名昇順」のように複数レベルを設定することで、並び替え結果が常に同じになる安定したソートが実現します。
フラッシュフィルと並び替えを組み合わせたデータ整理テクニック
フラッシュフィル(Ctrl+E)はExcelが入力パターンを学習して自動補完する機能で、並び替えと組み合わせるとデータ整理が効率化できます。
たとえばA列に「桜餅(和菓子)」のように商品名とカテゴリが混在して入力されている場合、フラッシュフィルで商品名とカテゴリを別列に分離してから並び替えを行う、という流れです。
データの形式を整えてから並び替えることで、より正確な並び替え結果が得られます。
【操作のポイント】並び替えの結果が毎回変わる「不安定なソート」を防ぐには、並び替えダイアログでレベルを追加し、第2・第3のキーで同値の場合の順番を明示的に指定しましょう。ROW関数の連番列も活用すると並び替え後の元に戻す作業が確実になります。
まとめ:Excelの行ごとの並び替えは行全体の連動設定とずれない操作が重要
本記事では、Excelで行ごとの並び替えをする方法として、行全体を連動させる設定・データがずれない操作ポイント・左右方向(列方向)への並び替え・特定の行だけを並び替える方法・関連関数の活用まで、幅広く解説しました。
行全体を連動させるには、データ範囲内の任意の1セルをアクティブにした状態で「並び替え」ダイアログを使い、プルダウンで基準列を明示指定するのが最も確実な方法です。
データがずれないためには、結合セルの解除・テーブル化・並び替え後の目視確認・COUNTA関数による件数チェックという4つのポイントを押さえることが重要です。
左右方向(列方向)の並び替えは「並び替えオプション」から「行単位で並び替え(左から右)」を設定することで実現できます。
SORT関数・RANK関数・LARGE関数などを組み合わせることで、元データを変えずに並び替え結果を活用する高度なデータ管理も可能になります。
連番列の事前準備と並び替え後の確認作業を習慣にして、Excelの行ごとの並び替えをより正確・安全に使いこなしていきましょう。