エクセル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つの並べ替えができました。
関連記事
-
データの操作
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
データの操作
エクセルVBAでシートの移動と同時に表のデータの並べ替えをする
成績表やデータ表などに付き物の並べ替え作業って地味に面倒だと思ったことありませんか? 優先順位をつけて並べ替える時に、同時にエクセルシートも切替出来たら作業が… -
セルの操作
エクセルVBAで複数セルを一括で結合・解除を繰り返し処理する方法
エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか? Mergeメソッドを書き加えれば、自動的にセル… -
データの操作
エクセルVBAで指定範囲内のセルの値「0」を全て空欄に置き換える方法
エクセルで表を扱う時に数式エラーを防ぐ為に、空欄の代わりにIFERROR関数などで数字の「0」で代用していることありませんか? この代用している値を一瞬で空欄にできる… -
ラベル
VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
ラベル(Label)にVBAコードを記述する ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを記述… -
データの操作
エクセルVBAで不要な行や列を非表示ができない時の対処方法と順番確認
データ抽出などで不要な行や列を自動的に非表示にできるExvel-VBAのHiddenプロパティですが、コードは正しく書かれているのにコマンドボタンを押すとエラーになったこと… -
データの操作
エクセルVBAで氏名・名前を姓と名で自動的に分割する簡単な方法
エクセルで表などを作成していると、並べ替えや振り分けなどのデータ処理が面倒だと思ったことはありませんか? データ処理に手間をかけていると仕事の作業効率が悪くな… -
データの操作
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ…
紅葉スポット
-
国営ひたち海浜公園みはらしの丘へあたり一面真っ赤なコキアの絶景へ
茨城県で10月中旬頃にピークを迎える人気ダントツ1位の観光スポット「ひたち海浜公園・みはらしの丘」の、真っ赤に染まった約32,000本コキアを見に世界中から訪日外国人… -
中禅寺湖湖畔の紅葉散策へ奥日光の大定番紅葉観光スポットへ
中禅寺湖観光の中禅寺温泉バスターミナルから華厳の滝や中禅寺湖畔散策へ紅葉を楽しみに訪れる方も多く、紅葉見頃になるといろは坂からの大渋滞に巻き込まれ1時間以上、… -
城峯公園で十月桜ともみじの紅葉のピンクと赤のコラボの絶景へ
群馬県との県境で標高500mにある高台に位置し、下久保ダム(神流湖)を眺めることができる城峯公園には、なんと晩秋から初冬にかけて開花し、別名十月桜とも呼ばれてい… -
ときわ路パスで行ける茨城県人気紅葉スポット
茨城県内の紅葉人気ランキング 関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でもいろは坂は大渋滞なのに休日ともなると日光駅周辺か… -
日光白根山ロープウェイで標高1400mから2000mの紅葉遊覧へ
丸沼高原といえば首都圏から日帰りで行くことができるスキー場ですが、秋の紅葉シーズンになるとひと足早く木々が色づき、リフトから山頂へ向かえば紅葉絶景の景色が広… -
三国峠猿ヶ京温泉の赤谷湖畔水鏡紅葉と江戸時代の関所跡見学へ
国道17号で三国峠を目指す途中にある温泉街の猿ヶ京には、関所と相俣ダムによってできた赤谷湖が観光スポットになっています。 そして紅葉になると周囲の三国連山が綺麗…