エクセル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つの並べ替えができました。
関連記事
-
ラベル
VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
【ラベル(Label)にVBAコードを記述する】 ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを… -
データの操作
エクセルVBAで氏名・名前を姓と名で自動的に分割する簡単な方法
エクセルで表などを作成していると、並べ替えや振り分けなどのデータ処理が面倒だと思ったことはありませんか? データ処理に手間をかけていると仕事の作業効率が悪くな… -
データの操作
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
データの操作
エクセルVBAで指定範囲内のセルの値「0」を全て空欄に置き換える方法
エクセルで表を扱う時に数式エラーを防ぐ為に、空欄の代わりにIFERROR関数などで数字の「0」で代用していることありませんか? この代用している値を一瞬で空欄にできる… -
セルの操作
エクセルVBAで複数セルを一括で結合・解除を繰り返し処理する方法
エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか? Mergeメソッドを書き加えれば、自動的にセル… -
データの操作
エクセルVBAでシートの移動と同時に表のデータの並べ替えをする
成績表やデータ表などに付き物の並べ替え作業って地味に面倒だと思ったことありませんか? 優先順位をつけて並べ替える時に、同時にエクセルシートも切替出来たら作業が… -
データの操作
エクセルVBAで不要な行や列を非表示ができない時の対処方法と順番確認
データ抽出などで不要な行や列を自動的に非表示にできるExvel-VBAのHiddenプロパティですが、コードは正しく書かれているのにコマンドボタンを押すとエラーになったこと… -
データの操作
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ…
紅葉スポット
-
中禅寺湖湖畔の紅葉散策へ奥日光の大定番紅葉観光スポットへ
中禅寺湖観光の中禅寺温泉バスターミナルから華厳の滝や中禅寺湖畔散策へ紅葉を楽しみに訪れる方も多く、紅葉見頃になるといろは坂からの大渋滞に巻き込まれ1時間以上、… -
開業90年を超えても現役の日光いろは坂にある明智平ロープウェイ
日光駅や日光東照宮がある市街地と奥日光を結ぶいろは坂の終盤にある位置する「明智平」は、トイレや売店があるドライブインと呼んだ方がいい所なのですが、日光エリア… -
白馬岩岳の絶景「三段紅葉」へ長野駅からバスで滞在時間140分
10月下旬ごろ~11月上旬になるとテレビなどでよく話題になる絶景のビューポイントで、北アルプスの山頂が雪化粧をして赤く色づいた山麓、そして山のふもとはまだ緑色が… -
三国峠猿ヶ京温泉の赤谷湖畔水鏡紅葉と江戸時代の関所跡見学へ
国道17号で三国峠を目指す途中にある温泉街の猿ヶ京には、関所と相俣ダムによってできた赤谷湖が観光スポットになっています。 そして紅葉になると周囲の三国連山が綺麗… -
塩原温泉・紅の吊橋の紅葉絶景へ那須塩原駅や黒磯駅からバスで行く
【紅葉見頃】10月下旬~11月中旬 塩原温泉郷と言えば、箒川(ほうきがわ)沿いに温泉旅館が点在している首都圏からも近い温泉街ですが、紅葉の時期になるとカエデやも… -
養老渓谷紅葉ライトアップへ上総中野駅からバスで滞在時間3時間
懐かしい国鉄車両に乗車できるいすみ鉄道に乗って、昭和の風情が残る養老渓谷の温泉街で地元振興もかねて「養老渓谷もみじまつり」が行われ、ライトアップも行いながら…