Excel-VBA表のデータの並べ替え

パソコン難しい Excel-VBA
スポンサーリンク

こんにちは、とりっぷぼうるです。

元々エクセルとは全く縁のない生活をしていましたが、人員不足などで少しでもデータ入力作業や集計作業を効率化するしか方法が無く、仕方がなくエクセルに取り組み始まました。

なぜならば、大きな会社ならば専用ソフトやクラウド上でデータ集計や管理を行うのでしょうけど、小さなところではそのようなお金もないのでエクセルで解決するしか方法が無いのですよね。

このような理由からエクセルに取り組み始めましたので、当然ながらエクセルの専門知識もなく、学校に通うこともできずにただ単にエクセルの書籍とにらめっこしながら取り組んでいます。

波乗りアヒル
波乗りアヒル

でも書籍のままだと実用的でないことが多く、VBAコードを組み合わせてみたら動いた!という実用例・体験談を書いています。

Excel-VBAの専門学校通学や・資格があるわけではありませんので、あくまでエラーにならずに動いてくれているVBAコードになりますので、掲載のVBAコードが同じように動く保証はできません。
実際に動いているエクセルは2009と2016です。

Sortメソッドを使用して順位を並べ替える

ボウリングのリーグ戦での成績表でも必ず使う並べ替え。

わざわざ毎回ツールバーにある「データ」から並べ替えを選び、優先項目を選択してから並べ替えなんて面倒ですね。

個人成績一覧表のシートを開いたら自動的に並べ替え完了にしたいと思いませんか

波乗りアヒル
波乗りアヒル

魔法のような方法だけど自動的に並べ替えなんてできるの?

SortメソッドをコマンドボタンにVBAコード書くだけよ

では、この画像を使って説明しよう!

value関数

この画像は、「ボウリング成績表印刷設定方法~LTB個人リーグ編」で使用している成績表の一部抜粋です。
ボウリング成績表印刷設定方法~LTB個人リーグ編
エクセルで作成しているボウリングリーグ成績表を自動化で、リーグ戦参加者の成績表を作成・印刷専用フォームの使い方

ここで並べ替える範囲は列B(登録)から列M(HG)までで、行は3行目(登録1東京)から17行目(登録15北松戸)までです。

優先順位は以下の通りです。

  1. POINT(列E)
  2. AVE(列L)
  3. 累計(列J)

全て数字が降順(大きい順)で並べ替えます。

Excel-VBAで並べ替えられるのは3つまでですが4つ以上並べ替えたい場合は、ちょっと工夫が必要ですが、ここでは使わないので省略します。
エクセルVBAで4つ以上並べ替えする方法
エクセルの標準機能で並び替えはいくつでもできるのに、VBAだと3つしかできません。4つ以上の並び替えKEY4はエラーになります。そこでちょっとした工夫で4つ以上の並び替えをVBAできるので、ぜひマネして取り入れてはいかがですか?

上記の条件でSortメソッドを使ったVBAコードです。

Range(“B3:M17”).Sort Key1:=Range(“E2”), Order1:=xlDescending, Key2:=Range(“L2”), Order2:=xlDescending, Key3:=Range(“J2”), Order3:=xlDescending

抜粋の関係上、全てのVBAコードは書いていません。並べ替えに必要な部分のみ記載しました。

並べ替える範囲(B3~M17)をSortメソッドを使って、
第1優先【Key1】はセル(E2)で昇順【Order1:=xlDescending】
第2優先【Key2】はセル(L2)で昇順【Order2:=xlDescending】
第3優先【Key3】はセル(J2)で昇順【Order3:=xlDescending】

となっています。

ちなみに登録順に戻すときに使うのが、降順(小さい順)xlAscendingです。

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

コメント