ついて情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。DateSerial関数とバブルソートを使ってシートを古い順に並び替えるVBAの勉強このブログの記事一覧にもどるTweetVBAによるプログラミングで、DateSerial関数とバブルソートを使ってエクセルのシートを並び替える方法を解説します。難しそうな処理も一工夫することで解決する実例を見ていきます。ことはできる、という意識が大切です。最後にシート名を戻しておくDateSerial関数とバブルソートを使ってシートを古い順に並び替える今回の題材の概要フォルダ内をループして必要なブックを取得し、ひとつのブックに集約しました。それぞれのシートはその月の売上実績データが入っています。シート名は現在このようになっています。YYYYとなっており、古い順に並び替えると言うのが、今回やりたいことです。Case文とFormat関数を使ってシート名をYYYYMMにするシートをシート名が意味する年月が古い順に並び替えたいのですが、このままではどれが古いのがわかりません。YYYYの表記をYYYYMMの6桁表記にします。MMの表記にするためにMMMをSelect~Case文を使って数字に置き換えます。これをFunctionプロシジャとして作成します。FunctionFormat関数を使っているのは、月を表す数字が一桁の場合に0で埋めて、月の表示を2桁に合わせるためです。4)とMと1をDateSerial関数に入れてから、Format関数に入れています。Functionプロシジャができたので、このFunctionプロシジャを使うメイン部分を作っていきます。シート名を勝手に置き換えるとユーザーが戸惑うかもしれないので、最後にはシート名を戻す必要があります。そこで、対応表を作っておきます。イメージはワークシートのA列に元のシート名、B列に6桁に変換した数字を入れる感じですが、本当にシートに書き込むわけに行かないので、配列を使います。Subこれで、シート名の変換ができました。ファイルを保存してテストします。実行結果バブルソートの考え方バブルソートは最も理解が容易なソート方法です。エクセルにはソート機能やオートフィルターのソート機能があり、シート上の値は大小に応じて降順に並び替える事ができます。今回はシートを並び替えるため、これらの機能が使えません。そこで、バブルソートと言う手法でシート名の日付を表す6桁の数値を比較して、シートを古い順に並び替えます。バブルソートの考え方は簡単です。今回は一番左から一番右のひとつ手前のシートまで下記を繰り返します。右隣のシート名の値と比べる右隣の値の方が小さければ右隣のシートを、今のシートの左に持ってくる。大きければそのままこの作業を左に持ってくる作業がなくなるまで繰り返せば左から小さい順に並び替える事ができます。バブルソートの実装それでは実装していきます。古い順にシートを並び替える()」の下に下記のコードを追記します。右隣のシートと比較して、右側のシート名の数字が小さければ左に持ってくる。Loop最後にシート名を戻しておく最後にシート名をもとに戻しておきます。それぞれのシート名を配列内で検索して持ってきます。下記のコードをLoopの下に追記します。wsここまで書けたらSubプロシジャを実行します。古い順に並べ替えた上でちゃんと元の表記に戻っている。無理そうな自動化も工夫次第でなんとかなるものです。知っている関数やステートメントの知識をフルにいかすためにも、絶対何とかする方法があるはず、と言う目で、処理内容を見てみましょう。ループ検索の速度を上げる方法(バイナリーサーチ)今回はVBAでループを使った検索を高速化する方法を解説します。4多次元配列VBAにおける多次元配列を解説します。週間)1985年生まれの会社員。業務改善部隊に異動で芽を出し、現在に至る。本業での知識と経験を元に、ブログとTwitterで1生産性向上2業務改善3自動化について情報発信しています。アーカイブはてなブログをはじめよう!mutable_yunさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。