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で先頭行をタイトル行とみなし、並び替えの対象から外します。

関連記事

Exdel VBA:グローバル変数の指定

Excel VBAでグローバル変数を設定する方法です。 プロシージャ内で宣言した変数は、そのプロシージャ内でしか通用しません。 すべてのプロシージャから参照するような定数を設定する場合には、以下のよう…続きを読む

Excelのフォームのタブオーダーを指定する

Excelでフォームを設定し、部品を複数配置していると、タブキーやEnterキーを押すと次の部品にフォーカスを飛ばすことができます。 この順序が意図したとおりでない場合に、自分で設定する方法を調べまし…続きを読む

Excel VBAでフィルタの絞り込みを解除する

ExcelVBAを使って、フィルタで絞り込んだ内容を解除する方法です。 VBAコード If Worksheets(“シート名”).FilterMode Then Workshe…続きを読む

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

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

Excelでセルに入力できる文字数制限を設定する

Excelで、セルに入力できる字数の制限を設定する方法です。 全角・半角問わず字数制限する メニューから「データ」を選択し「データの入力規則」をクリックします。 データの入力規則設定画面で、「設定」タ…続きを読む

Excel VBAで他のプログラムを実行し処理が終わってから次の処理をする

CreateObject(“WScript.Shell”).Runを使って他のプログラムを実行する場合、デフォルトだと起動したプログラムの処理が終わる前に次の処理に移ってしまい…続きを読む

Excelで計算式を入れたセルに計算結果が反映されない

Excelで計算式を予め設定していたにもかかわらず、数値を入力してもそのセルに計算結果が反映されない時があります。 通常、自動計算する設定になっていますが、これが手動計算に変わっていることが原因です。…続きを読む

Excel VBAでコマンドプロンプトを起動しコマンドを実行する

Excel VBAでコマンドプロンプトを起動し、かつコマンドを実行する方法です。 コマンドプロンプトの実行 コマンドプロンプトを実行するには以下のように書きます。 CreateObject (&#82…続きを読む

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

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

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

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