• 公開日:

エクセルで列の並び替えをする方法

この記事では、エクセルで列の並び替えをする方法をご紹介します。

エクセルでは「並び替え機能」を使って「行」を並び替える場面が多くありますが、「並び替え機能」を使えば「列」の並び替えもすることができます。

以下では、ダイアログボックスやVBAを使って列を並び替える方法と、列の入れ替えができない場合の対処法についてもご紹介しています。

エクセルで列の並び替えをする方法

以下では、エクセルの「並び替え」機能のダイアログボックスやVBAを使って列の並び替えをする方法をご紹介します。

並び替え機能を使って列の並び替えをする方法

並び替え機能を使って横方向のデータを入れ替える方法をご紹介します。

例にあげた表は、1行目の日付がバラバラになっているので、1日から5日の順に並び替えます。①列を並び替える範囲を選択します。②データタブ、③並び替えの順に選択します。

「並び替え」ダイアログボックスが表示されました。オプションボタンを押します。

「並び替えオプション」ダイアログボックスが表示されました。①方向の項目で列単位を選択します。②OKボタンを押します。

「並び替え」ダイアログボックスに戻りました。①「行」で行1、②「並び替えのキー」でセルの値、③「順序」で昇順を選択します。④OKボタンを押します。

並び替え機能を使って列を並び替えることができました。

VBAを使って列の並び替えをする方法

VBAで列の並び替えの設定をすると、並び替える優先順位を毎回選択する必要がないので手間が減って便利です。

今回はVBAを使用するので、「開発」タブを表示させる必要があります。

開発タブを表示させる

上記の画像のような「開発」タブが表示されていない場合は、以下の記事を参考にして表示させましょう。

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

以下では、VBAを使って列の並び替えをする方法をご紹介します。

今回は、シートの1行目の項目をもとに列の入れ替えを行うようにVBAで設定します。

Visual Basicを開く

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

標準モジュールを開く

「Microsoft Visual Basic for Applications」が開きました。

挿入タブ、②標準モジュールの順に選択します。

コードを貼り付ける

標準モジュールが開きました。

以下のコードをコピーしてモジュールに貼り付けます。

Sub 列を並び替える()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastColumn As Long

    ' 対象のワークシートを指定する
    Set ws = ThisWorkbook.Worksheets("Sheet1") ' ワークシート名を適宜変更する

    ' 並び替えたい範囲の最終列を取得する
    lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' 並び替えたい範囲を指定する(1行目から最終列まで)
    Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(ws.UsedRange.Rows.Count, lastColumn))

    ' 列ごとに並び替えを行う
    With ws.Sort
        .SortFields.Clear
        .SortFields.Add Key:=rng.Rows(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange rng
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With

    ' ワークシートの再描画を有効化する
    Application.ScreenUpdating = True

    ' 完了メッセージを表示する
    MsgBox "列の並び替えが完了しました。"
End Sub

上記のコードはSheet1の1行目からが対象範囲になっているので、データと範囲があっているが確認してみてください。

ファイルを保存する

作成したマクロを保存します。

ファイルタブ、②上書き保存の順に選択します。

その際に、「次の機能はマクロなしのブックには保存できません」というダイアログボックスが表示された場合は、「いいえ」を選択してください。

マクロ有効ブックで保存する

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

保存先(例:デスクトップ)を選択し、②ファイル名(例:列を並び替える)を入力します。③ファイルの種類でExcelマクロ有効ブックを選択し、④保存ボタンを押します。

マクロを開く

Excelシートに戻ります。

開発タブ、②マクロの順に選択します。

作成したマクロを実行する

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

作成したマクロ(例:列を並び替える)を選択し、②実行ボタンを押します。

列の並び替えが完了する

「Microsoft Excel」ダイアログボックスが表示されました。

OKボタンを押します。

列の並び替えができた

VBAを使って列の並び替えをすることができました。

列の並び替えができない場合

以下では、列の並び替えが上手くいかない場合の原因と対処法についてご説明します。

セルが結合されている

セルが結合している場合のエラー

並び替えを実行しようとした際に、上記のような「この操作を行うには、すべての結合セルを同じサイズにする必要があります。」というエラーが表示された場合は、選択範囲内に結合されているセルがあります。

セルの結合を解除してから並び替えをしましょう。

以下では、セルの結合を解除する方法をご紹介します。

セルの結合を解除する

ホームタブ、②セルを結合して中央揃え、③セル結合の解除の順に選択します。

セルの結合が解除された

セルの結合を解除することができました。

漢字が五十音順に並び替えできない

漢字で入力されたセルの並び替えをしようとした際に、五十音順にならないことがあります。

例えば、「上野(うえの)」と入力しようとした際、変換で出ない場合などに「上野(かみの)」と入力すると、エクセルでは「上野(かみの)」として五十音順に並び替えられます。

以下では、このような場合の対処法をご紹介します。

フリガナを振る

漢字のふりがなを表示させます。

ふりがなを表示させる範囲、②ホームタブ、③ふりがなの表示/非表示の順に選択します。

入力したときのフリガナになっている

ふりがなが表示されました。

入力した際のふりがなのままになっているので、正しいふりがなに編集します。

フリガナを編集する

フリガナを編集するセルを選択します。

ホームタブ、③ふりがなの表示/非表示、④ふりがなの編集の順に選択します。

矢印キーを動かしながらふりがなを編集してください。

正しい順番に並び替えられた

正しいふりがなに直すことで、五十音順に並び替えることができました。

一行追加してフリガナの行を作る

また、上記の画像のように一行追加してふりがなを入力してから並び替える方法もありますので、どちらか選んで並び替えをしてみてください。