Excel VBAのデータの並べ替えは、Sortメソッドを使用します。
目次
Excel VBA Sortメソッド
Sortメソッドは、データの並べ替えを行うメソッドで、並べ替えの条件指定と、並べ替え挙動指定の2つに分かれています。
Sort.SortFields.Add2 は並べ替えの条件
Sort.SortFields.Add2 は並べ替えの条件を指定するためのメソッドです。
Key
並べ替えの基準となる列や範囲を指定します。
SortOn
並べ替えるデータの種類(値、セルの色、フォントなど)を指定します。
Order
並べ替えの順序を指定します(昇順、降順)
DataOption
並べ替えのデータオプションを指定します(通常のデータ、テキスト、数式など)
Key:= には並べ替えの基準となる列や範囲を指定するための式や Range オブジェクトが入ります。たとえば、Range("A1:B10") のようなセル範囲を指定することができます。
SortOn:= は、SortFields.Add2 メソッドの引数の1つで、並べ替えの対象となるデータの種類を指定します。
xlSortOnValues
値を基準に並べ替えます。
xlSortOnCellColor
セルの色を基準に並べ替えます。
xlSortOnFontColor
フォントの色を基準に並べ替えます。
xlSortOnIcon
アイコンセットを基準に並べ替えます。
Order:= は、SortFields.Add2 メソッドの引数の1つで、並べ替えの順序(昇順または降順)を指定します。
xlAscending
昇順に並べ替えます(AからZ、0から9の順)
xlDescending
降順に並べ替えます(ZからA、9から0の順)
DataOption:= は、SortFields.Add2 メソッドの引数の1つで、並べ替え時のデータのオプションを指定します。
xlSortNormal
通常の並べ替えを行います。
xlSortTextAsNumbers
テキストを数字として扱って並べ替えを行います。
Sortメソッドの並べ替えの挙動指定と実行
.Sort は並べ替えの挙動指定とSortの実行のメソッドです。
SetRang
並べ替えを行うデータの範囲を指定します。
Header
並べ替えの際に対象範囲のヘッダーの有無を指定します。
MatchCase
並べ替える際に大文字と小文字を区別するかどうかを指定します。
Orientation
並べ替えの方向を指定します。
SortMethod
並べ替えの方法を指定を指定します。
Apply
並べ替え条件を適用して、データを並べ替えます。
.SetRange Range("A1:D10")
並べ替えるデータの範囲を指定
.Header = xlYes 1行目タイトル
xlGuess
Excelが自動判定
xlYes
1行目タイトル
xlNo
1行目タイトルでない
.MatchCase = True 大文字と小文字を区別して並べ替える
True
テキストの大文字と小文字を区別して並べ替えを行います。
False
大文字と小文字を区別せずに並べ替えを行います。
.Orientation = xlTopToBottom 上から下への並べ替え
xlTopToBottom
上から下への並べ替えを行います。
xlLeftToRight
左から右への並べ替えを行います。
.SortMethod = xlPinYin
xlPinYin
日本語をふりがなで並べ替える
xlStroke
日本語を文字コードで並べ替える
Sub SortByColumnA()
Dim sortRange As Range
Set sortRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10") ' 並べ替え対象の範囲を指定
' A列を数字として扱って並べ替える
ThisWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 _
Key:=sortRange.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
' 並べ替えを実行
With ThisWorkbook.Worksheets("Sheet1").Sort
.SetRange sortRange
.Header = xlYes ' タイトルがある場合はxlYesを指定
.Apply ' 並べ替えを実行
End With
End Sub
ActivieWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
前回指定分の条件が残っていることもあるので、Sort条件をクリアしてから実行します。
上記では、 ThisWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 _の1行前に、ThisWorkbook.Worksheets("Sheet1").Sort.SortFields.Clearと指定します。
Excel VBA 2003までのSortメソッド
Range("A1").Sort Key1:=Range("D1"),Order1:=xlAscending,Header:=xlYes
Range("A1")を含む表全体を、`Key1`引数で指定した`Range("D1")`の列を昇順でデータを並べ替えます。 Header 引数は、1行目がタイトルと指定しています。
Excel VBA ふりがなの操作
セルのふりがなはPhoneticオブジェクトで確認します。
MsgBox Range("A2").Phonetic.Text
A2にふりがなが設定されていると、ふりがなを表示します。ふりがなが未設定の場合は漢字をそのまま表示します。
Phonetic.Textに、任意のふりがな設定できますが、以下のようにクリアはできません。
Range("A2").Phonetic.Text=""
Excel VBA エキスパート資格は、VBAプログラミングの専門家としての信頼性を高め、キャリアの成長に大きく貢献し、求人市場での競争力を高め、キャリア機会を拡大します。 あなたもExcel VBAのスキルを証明できるようにしませんか? 当サイトでは、Excel VBAエキスパート認定資格取得に役立つ情報を提供しています。まずは問題集から挑戦してみませんか? ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。