エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験ありませんか?
並べ替えのSortメソッドの標準機能が3つ目までなのですが、あきらめずに工夫をすれば4つ目以降も並べ替えができるようになりましたので、ご紹介いたします。
Sortメソッドを2回に分けて使う
下の図はサッカーっぽい成績表なのですが、順位を決めるのに勝ち点を最優先にしますが、同点の場合更に3つの条件により順位を決定しています。

順位決定するには「勝ち点」「得失点差」「総得点」「総失点」の順に決定するのでSortメソッドでは3項目なので足りません。
- 勝ち点が多いチーム順(D列)
- 勝ち点が同点の場合に得失点差の多いチーム順(E列)
- 総得点の多いチーム順(F列)
- 総失点の少ないチーム順(G列)
そうなると優先順位は4項目、Key4が必要になりましたがKey4は使えないので、2回に並び替えを分けます。
並べ替え手順①
まず始めに優先順位4番目(総失点の少ない順)を並べ替えますので、VBAコードはいつものようにユーザーフォームを使う実例です。
Private Sub CommandButton1_Click()
Range(“B2:G23”).Sort Key1:=Range(“G3”), Order1:=xlAscending
End Sub
- コマンドボタン1がクリックされたら
- 表の範囲のセルB2~G23をG3の列で小さい順(昇順)で並べ替える
- マクロ記録終了
並べ替え手順②
この状態で次に優先項目1~3を並べ替えれば、2回に分けて並べ替えたおかげで4項目順に並べ替えることができます。
Private Sub CommandButton1_Click()
Range(“B2:G23”).Sort Key1:=Range(“G3”), Order1:=xlAscending
Range(“B2:G23”).Sort Key1:=Range(“D3”), Order1:=xlDescending, Key2:=Range(“E3”), Order2:=xlDescending, Key3:=Range(“F3”), Order3:=xlDescending
End Sub
- コマンドボタン1がクリックされたら
- 表の範囲のセルB2~G23をG3の列で小さい順(昇順)で並べ替える
- 表の範囲のセルB2~G23を第1優先D3の列で大きい順(降順)で並べ替える
- 第2優先でE3列を大きい順で並べ替える
- 第3優先でF3列を大きい順で並べ替える
- マクロ記録終了

これが2回に分けた並べ替えのVBAコードの完成版で、ちょっとの工夫で4つの並べ替えができました。
関連記事
-
エクセルVBAで氏名・名前を姓と名で自動的に分割する簡単な方法
エクセルで表などを作成していると、並べ替えや振り分けなどのデータ処理が面倒だと思ったことはありませんか? データ処理に手間をかけていると仕事の作業効率が悪くな… -
VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
【ラベル(Label)にVBAコードを記述する】 ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを… -
エクセルVBAで不要な行や列を非表示ができない時の対処方法と順番確認
データ抽出などで不要な行や列を自動的に非表示にできるExvel-VBAのHiddenプロパティですが、コードは正しく書かれているのにコマンドボタンを押すとエラーになったこと… -
エクセルVBAで複数セルを一括で結合・解除を繰り返し処理する方法
エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか? Mergeメソッドを書き加えれば、自動的にセル… -
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ… -
エクセルVBAで指定範囲内のセルの値「0」を全て空欄に置き換える方法
エクセルで表を扱う時に数式エラーを防ぐ為に、空欄の代わりにIFERROR関数などで数字の「0」で代用していることありませんか? この代用している値を一瞬で空欄にできる… -
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
エクセルVBAでシートの移動と同時に表のデータの並べ替えをする
成績表やデータ表などに付き物の並べ替え作業って地味に面倒だと思ったことありませんか? 優先順位をつけて並べ替える時に、同時にエクセルシートも切替出来たら作業が…
紅葉スポット
-
群馬甘楽町の紅葉山公園へのバスが廃止でも1回500円の愛タク利用へ
【紅葉見頃】11月上旬~11月中旬 富岡市のコミュニティーバスが2020年で廃止になり利用しづらくなりましたが、代わりに2021年から登場したデマンドタクシーがあるので… -
「乙女の湖」鎌北湖畔の湖面反射が美しい紅葉絶景へ東毛呂駅からバス
【紅葉見頃】 飯能市の北にある入間郡毛呂山町の山中にある鎌北湖は、毛呂山町ホームページによると昭和10年に完成した農業用貯水池として作られた人工湖で、周囲2㎞… -
茨城県内の11月に見頃を迎えるおススメ紅葉スポット11選
【茨城県内の人気紅葉スポット】 関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でもいろは坂は大渋滞なのに休日ともなると日光駅周辺… -
日本三名瀑・袋田の滝は紅葉ライトアップの名所で袋田駅からバス
日本三名瀑でもある袋田の滝は、高さ120m幅70mの大きさを誇りトンネル横の展望台からは、目の前に迫った滝を見ることができます。 そしてエレベーターで昇った展望台… -
日光白根山ロープウェイで標高1400mから2000mの紅葉遊覧へ
丸沼高原といえば首都圏から日帰りで行くことができるスキー場ですが、秋の紅葉シーズンになるとひと足早く木々が色づき、リフトから山頂へ向かえば紅葉絶景の景色が広… -
フリーきっぷで行く群馬県内の紅葉名所や穴場スポット21選
渋滞避けて電車とバスでのんびり紅葉を見に行きませんか?群馬県の山間部ならば9月中旬頃から紅葉が見られる名所・スポットがありますので、少し早い秋の訪れを感じに出…