• 公開日:

エクセルの並び替えでSORT関数以外を使う方法

エクセルのデータを整理する際の便利な機能として、SORT関数を使っての並び替えがあります。

SORT関数を使うとデータを特定の順序で並び替えることが可能ですが、エクセルのバージョンや環境によって使えない場合があります。

この記事では、SORT関数以外でエクセルのデータをスムーズに並び替える方法をご紹介します。

SORT関数でできること

SORT(ソート)関数はExcelでデータの並べ替えができる関数です。

指定した範囲内のデータを昇順または降順に並べ替え、その結果を数式を入力したセルを起点に表示します。

SORT関数について

例えば上記の画像は、A2セルからB10セルの点数表の値を点数が高い順にD2セルから並べ替えた例です。

D2セルにSORT関数を入力しています。

ただし、SORT関数はExcel 2021以降もしくはMicrosoft 365でしか使えません。

以下では、SORT関数を使わずにエクセルでSORT関数のような並び替えを行う方法をご紹介します。

エクセルの並び替えでSORT関数以外を使う方法

エクセルの並び替えで、SORT関数以外を使う方法をご紹介します。

関数を使って並べ替える方法

RANK関数とVLOOKUP関数を使って、SORT関数のような並べ替えを行う方法をご紹介します。

表を作成する

まずは上記のような表を準備します。

今回はA2セルからB10セルの点数表を点数が高い順に並べ替えて、E2セルからF10セルに表示します。

行を挿入する

まずは列を追加します。後ほどVLOOKUP関数を使うので表の一番左端に列を追加しましょう。

A列の列番号を右クリックして、②「挿入」を選択します。

RANK関数を入力する

新しい列が追加できました。RANK関数を入力して点数を基準に番号をふります。

RANK関数はデータに降順もしくは昇順で順位をつける関数で、書式は「=RANK(数値,参照,[順序])」です。

RANK関数の詳細は以下の記事でご紹介しています。

ExcelのRANK関数の使い方|データの順位を求める

A2セルに「=RANK(C2,$B$2:$C$10,0)」と入力し、Enterを押します。

オートフィルでコピーする

RANK関数が入力できました。オートフィルでコピーします。

セルの右下にあるフィルハンドルをドラッグします。

1から連番を入力する

左側の表に点数順の順位をつけられました。

次にE列に1から連番を入力します。

今回はデータが10個あるので「1から10」までを入力しました。

VLOOKUP関数を入力する

次にVLOOKUP関数を使います。

VLOOKUP関数は指定した条件にあうデータを抽出する関数で、書式は「=VLOOKUP(検索値,範囲,列番号,[検索方法])」です。

VLOOKUP関数の詳細については以下の記事でご紹介しています。

ExcelのVLOOKUP関数の使い方|指定の列と同じ行にある値を返す

F2セルに「=VLOOKUP(E2,$A$2:$C$10,2,FALSE)」と入力して、Enterを押します。

オートフィルでコピーする

VLOOKUP関数が入力できました。オートフィルでコピーします。

セルの右下にあるフィルハンドルをドラッグします。

VLOOKUP関数を入力する

点数の方にもVLOOKUP関数を入力します。

G2セルに「=VLOOKUP(E2,$A$2:$C$10,3,FALSE)」と入力して、Enterを押します。

オートフィルでコピーする

VLOOKUP関数が入力できました。オートフィルでコピーします。

セルの右下にあるフィルハンドルをドラッグします。

並べ替えができた

すると、左側の表を点数の高い順に並べ替えることができました。

以上の操作で、RANK関数とVLOOKUP関数を使って並べ替えができました。

VBAを使って並べ替える方法

VBAを使って、SORT関数のように並べ替える方法をご紹介します。

開発タブについて

VBAの編集には開発タブを使用します。開発タブはデフォルトでは表示されていないため、以下の記事を参考に表示させましょう。

エクセルの開発タブを表示する方法

並び替えられた

今回は上記の画像の点数表を、VBAを使って点数が高い順に並べ替えます。

Visual Basicを選択する

「開発」タブ、②「Visual Basic」の順に選択します。

標準モジュールを開く

「Microsoft Visual Basic for Applications」というVBAの編集が表示されます。

「新しい標準モジュール」、②「標準モジュール」の順に選択します。

コードをコピーする

標準モジュールに以下のコードをコピーします。

「A1セルからB10セルの表を点数が高い順に並べ替える」という意味のコードです。

具体的には「A1セルからB10セルの表を書式ごとコピーして、点数が高い順に並べ替えて貼り付ける」という操作になっています。


Sub SortAndCopyDataDescending()
    Dim ws As Worksheet
Sub CopyAndSortTableByColumnB()

    Range("A1:B10").Copy
    Range("D1").PasteSpecial Paste:=xlPasteAll

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)

    Dim sortRange As Range
    Set sortRange = ws.Range("D2:E10")

    With ws.Sort
        .SortFields.Clear
        .SortFields.Add Key:=sortRange.Columns(2), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange sortRange
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub


コピーする表の範囲を変更したい場合は、5行目「Range("A1:B10").Copy」のセル番地を変更します。

貼り付けるセルを変更したい場合は、6行目の「Range("D1").PasteSpecial Paste:=xlPasteAll」のセル番地を変更しましょう。

保存ボタンを押す

コードを貼り付けたら、「保存」を選択します。

マクロ有効ブックとして保存する

「名前を付けて保存」ダイアログボックスが表示されます。

①任意の保存場所(例:デスクトップ)を選択します。

②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。

マクロを開く

マクロを保存できました。

エクセルに戻って、①「開発」タブ、②「マクロ」の順に選択します。

マクロを選んで実行ボタンを押す

「マクロ」ダイアログボックスが表示されます。

作成したマクロを選択し、②「実行」ボタンを押します。

並び替えできた

以上の操作で、A1セルからB10セルの表を点数順に並び替えることができました。