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