Excel VBA スタンダード・データの並べ替えについて

Excel VBAのデータの並べ替えは、Sortメソッドを使用します。

 

Excel VBA Sortメソッド

Sortメソッドは、データの並べ替えを行うメソッドで、並べ替えの条件指定と、並べ替え挙動指定の2つに分かれています。

 

Sort.SortFields.Add2 は並べ替えの条件

 

Sortメソッドの並べ替え条件

Sort.SortFields.Add2 は並べ替えの条件を指定するためのメソッドです。

Key
並べ替えの基準となる列や範囲を指定します。

SortOn
並べ替えるデータの種類(値、セルの色、フォントなど)を指定します。

Order
並べ替えの順序を指定します(昇順、降順)

DataOption
並べ替えのデータオプションを指定します(通常のデータ、テキスト、数式など)

 

Key:=

Key:= には並べ替えの基準となる列や範囲を指定するための式や Range オブジェクトが入ります。たとえば、Range("A1:B10") のようなセル範囲を指定することができます。

 

SortOn:=

SortOn:= は、SortFields.Add2 メソッドの引数の1つで、並べ替えの対象となるデータの種類を指定します。

xlSortOnValues
値を基準に並べ替えます。

xlSortOnCellColor
セルの色を基準に並べ替えます。

xlSortOnFontColor
フォントの色を基準に並べ替えます。

xlSortOnIcon
アイコンセットを基準に並べ替えます。

 

Order:=

Order:= は、SortFields.Add2 メソッドの引数の1つで、並べ替えの順序(昇順または降順)を指定します。

xlAscending
昇順に並べ替えます(AからZ、0から9の順)

xlDescending
降順に並べ替えます(ZからA、9から0の順)

 

DataOption:=

DataOption:= は、SortFields.Add2 メソッドの引数の1つで、並べ替え時のデータのオプションを指定します。

xlSortNormal
通常の並べ替えを行います。

xlSortTextAsNumbers
テキストを数字として扱って並べ替えを行います。

 

Sortメソッドの並べ替えの挙動指定と実行

 

Sortメソッドの並べ替えの挙動指定と実行

.Sort は並べ替えの挙動指定とSortの実行のメソッドです。

SetRang
並べ替えを行うデータの範囲を指定します。

Header
並べ替えの際に対象範囲のヘッダーの有無を指定します。

MatchCase
並べ替える際に大文字と小文字を区別するかどうかを指定します。

Orientation
並べ替えの方向を指定します。

SortMethod
並べ替えの方法を指定を指定します。

Apply
並べ替え条件を適用して、データを並べ替えます。

 

SetRange

.SetRange Range("A1:D10")

 並べ替えるデータの範囲を指定

 

Header

.Header = xlYes  1行目タイトル

xlGuess
Excelが自動判定

xlYes
1行目タイトル

xlNo
1行目タイトルでない

 

MatchCase

.MatchCase = True  大文字と小文字を区別して並べ替える

True
テキストの大文字と小文字を区別して並べ替えを行います。

False
大文字と小文字を区別せずに並べ替えを行います。

 

Orientation

.Orientation = xlTopToBottom  上から下への並べ替え

xlTopToBottom
上から下への並べ替えを行います。

xlLeftToRight
左から右への並べ替えを行います。

 

SortMethod

.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メソッド

2003までのSortメソッド

Range("A1").Sort Key1:=Range("D1"),Order1:=xlAscending,Header:=xlYes

Range("A1")を含む表全体を、`Key1`引数で指定した`Range("D1")`の列を昇順でデータを並べ替えます。 Header 引数は、1行目がタイトルと指定しています。

 

Excel VBA ふりがなの操作

Phoneticオブジェクト

セルのふりがなはPhoneticオブジェクトで確認します。

MsgBox Range("A2").Phonetic.Text

A2にふりがなが設定されていると、ふりがなを表示します。ふりがなが未設定の場合は漢字をそのまま表示します。

Phonetic.Textに、任意のふりがな設定できますが、以下のようにクリアはできません。

Range("A2").Phonetic.Text=""

Excel VBA エキスパート資格は、VBAプログラミングの専門家としての信頼性を高めキャリアの成長に大きく貢献し、求人市場での競争力を高め、キャリア機会を拡大します。

あなたもExcel VBAのスキルを証明できるようにしませんか?

当サイトでは、Excel VBAエキスパート認定資格取得に役立つ情報を提供しています。まずは問題集から挑戦してみませんか?

 

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。