エクセルのボウリング成績表の順位並べ替え作業をVBA登録する方法
ボウリングスコアーを参加者全員分の入力が終わったら、成績一覧表を順位順に並べ替える作業って地味だけどいつも同じ作業が面倒だと思って、一瞬で終わる方法探していますよね。
西船ボウルのリーグ成績表でも、エクセルでの入力が終わったらエクセルVBAを使ってリーグごとに異なりますが、勝利順やポイント順に自動的に並べ替わるようになっています。
- 並べ替え「Sort」
Sort機能をVBA登録して順位並べ替え
リーグ戦の成績表をエクセルで作っているならば、ポイント順や勝敗順にデータを並べ替える作業はいつもやらなければならない作業で、こんな感じで並べ替えしていませんか?
- 並べ替えをする成績表の範囲を選択する
- ワークシートの上にあるメニュー(リボン)から「データ」を選択
- 同じくリボンから「並べ替え」を選択
- 並べ替えのダイアログが表示されたら、最優先列を選択
- 同じく順序を選択(大きい順や降順)
- 最後にOKボタンをクリック
作業自体は簡単なので、当たり前の作業だと思い込んでいると時間の無駄です!
【基本】1つの値だけの並べ替え
実はこの作業自体をSort機能を使って、下記のように記載してボタンにVBA登録すれば、一瞬で終わるので並べ替え作業時間は1秒以下です。
Sub 並べ替え()
Range(“A2:F8”).Sort Key1:=Range(“B1”), Order1:=xlDescending
End Sub
並べ替えを指示しているVBAコードは、たった1行で、3つのブロックに分かれています!
上のボウリング成績表サンプルを参照すると、並べ替えたい範囲を「Range(“A2:F8”).Sort」で表しています。
これが手作業の1番~3番の作業に相当します。
成績表の順位はポイント(B列)が多い順に並べ替えたいので、「Key1:=Range(“B1”)」で表しています。
並べ替えをポイントの多い順(降順)にしたいので、「Order1:=xlDescending」で表しています。
Key1で並べ替えの値を指定して、Order1でKey1で指定した値を大きい順や小さい順に指定することができ、セットで使用します。
【実用】2つや3つの値の並べ替え
ボウリングのリーグ戦でのエクセルで作っている成績表では、同点ポイントになることが多いはずなので基本の1つだけの値で並べ替えをすることはありませんよね。
西船ボウルでのリーグ戦では・・・
- ポイント順
- スクラッチでの総得点
- HGなど
このように並べ替え優先順位をつけて成績表を作っているので、Key2とOrder2、Key3とOrder3も使っているので、まとめてVBAコードをボタンに登録すると下記のようになります。
Sub 並べ替え()
Range(“B3:U42”).Sort Key1:=Range(“F2”), Order1:=xlDescending, Key2:=Range(“K2”), Order2:=xlDescending, Key3:=Range(“R2”), Order3:=xlDescending
End Sub
このように、Key1からKey3まで続けて書いてしまえば、3つの値に対しての優先順位で並べ替えができるので特に難しくはありませんよ。
ボウリングの成績表のポイント順以外にもHGやHSを並べ替えて使用することもありますよね。
そのたびに範囲指定して値を選ぶこともできますが、何度も行うのであればボタン登録しておいたほうがとても便利で作業豪率も上がりますよ。
最初のうちはコピペして使って、慣れてきたら並べ替えで無駄な時間を使わなくなるので楽できますよ!
ボウリング成績表で必須のVBAコード
エクセルのボタンの配置方法やリボンツールバーの「開発」設定がまだの場合、この機能使えないので設定から始めましょう~
西船ボウルで使用しているエクセルで作っているリーグ成績表(スタンディング)で、必ず使っているVBAコードです。
実際にはワークシート上にコマンドボタンを配置せず、専用の入力フォームも(ユーザーフォーム)作成してフォーム上にボタンなどを配置しています。
成績表作成でよく使う便利機能
エクセルファイル操作の便利機能