HOME技術ExcelExcel VBAでシートを並び替える

Excel VBAでシートを並び替える

ExcelVBAでシート内のデータを並び替える方法です。

VBAのコード

Endrow  = Worksheets(SheetName).Range(“A1”).End(xlDown).Row
OrderRange = “A1:I” & Endrow
Worksheets(SheetName).Select
Worksheets(SheetName).Range(OrderRange).Select
Selection.Sort Key1:=Worksheets(SheetName).Range(B1), Order1:=xlAscending, Header:=xlGuess

解説

Endrow…そのシートの最終行を格納。
OrderRange…並び替える範囲を格納。
SheetName…そのシートの名前

まず、Endrowにそのシートの最終行を獲得させます。そのために、最初から最後まで必ず入力されている列を指定します。ここではA1としています。
途中で入力が途切れていたりすると、そこまでを最終行として認識してしまいます。

Selection.Sortを使うと、指定した範囲内を並び替えることができます。
Key1…範囲を指定します。Rangeオブジェクトで指定。Key2、Key3まで指定可能。
Order1…xlAscendingだと昇順、xlDescendingだと降順。Order2、Order3まで指定可能。
Header…xlGuessで先頭行をタイトル行であるか否かを自動で判別します。xlNoで先頭行をタイトルとみなさず並び替えの対象とします。xlYesで先頭行をタイトル行とみなし、並び替えの対象から外します。

関連記事

Excelで指定行おきに色をつける

Excelの行に、1行おきに色を付けたい、2行おきに色を付けたい、というときの方法です。 まず、色を付ける範囲を指定します。 次に、メニューから「ホーム」→「条件付き書式」→「新しいルール」をクリック…続きを読む

Excel:ハイパーリンクで別ファイルを開く

Excelにおいて、別ファイルにハイパーリンクを付けて、リンクをクリックすると指定したファイルが開くようにします。 通常のハイパーリンクの作成の場合だと、セルの上で右クリック→「リンク」をクリックして…続きを読む

Excelで起動時にフォームのみ表示する

Excelで起動時にフォームを表示し、Excelそのものの表画面は非表示にする方法です。 起動時にフォームを表示する 「開発」→「コードの表示」から「Microsoft Visual Basic fo…続きを読む

Excel VBA:フォルダを開く

Excelでボタンをクリックしたらフォルダを開くようにするVBAです。 Shell EXPLORERPATH & OPENFOLDER , vbNormalFocus EXPLORERPATH…続きを読む

Excel VBAでログイン管理をする

Excelを開いたときに「閲覧のみ」ユーザか「管理者」ユーザかを選び、「閲覧のみ」ユーザの場合にはExcelを閉じるときに保存できないようにして、「管理者」ユーザの場合には、Excelを閉じるときに変…続きを読む

Excel:改行を含むテキストを置換する

Microsoft Excelで、セルの中で改行しているテキストを置換する方法です。 以下のように、 あああ いいい という改行を含むテキストを「おおお」というテキストに置換します。 改行を含めたテキ…続きを読む

Excel VBAで他のプログラムを実行する際にウィンドウを最小化する

Excel VBAで他のプログラムを実行した際に、実行しているプログラムのウィンドウを最小化表示にする方法です。 CreateObject(“WScript.Shell”).R…続きを読む

Excel VBA:指定した列を非表示にする

Excel VBAで、予め指定した列を非表示にします。 コード hiddenColumn = Array(3, 4, 5, 6) For i = 0 To UBound(hiddenColumn) W…続きを読む

Excel:別のExcelファイルの値を参照したファイル

Excelでは、別のExcelファイルの値を参照させることができます。 その際、2つのExcelを開いておき、一方から他方のセルをクリックすることで参照させることができます。 このとき、参照先のExc…続きを読む

Excel VBA:メールを送信する

Excel VBAからメールを送信するボタンをつくります。 パスワードロックをかけたブックを利用していて、パスワードがわからなくなったらメールを送信してパスワードを教える機能を付けようと思い、調べまし…続きを読む