ExcelのVBA・マクロで一覧表を操作する方法まとめ

ExcelのVBA・マクロで一覧表を操作する方法をいくつか紹介します。

一覧表をフィルターで絞り込む方法

ここでは、ExcelのVBA・マクロで一覧表をフィルターで絞り込む方法を紹介します。

ExcelのVBA・マクロで一覧表をフィルターで絞り込むには、AutoFilterを使います。

<サンプル>
Sub test39()
‘表の書式設定
Range(“A1:C1”).Interior.Color = rgbYellow
Range(“A1:C1”).Font.Color = rgbRed
Range(“A1:C1”).HorizontalAlignment = xlCenter
Range(“A1:C7”).Borders.Weight = xlThin
Range(“A1:C7”).Font.Name = “Meiryo UI”
Range(“A1:C7”).Font.Size = 12

‘表のデータ
Range(“A1”).Value = “グループ”
Range(“B1”).Value = “名前”
Range(“C1”).Value = “点数”
Range(“A2”).Value = “A”
Range(“A3”).Value = “B”
Range(“A4”).Value = “C”
Range(“A5”).Value = “A”
Range(“A6”).Value = “B”
Range(“A7”).Value = “C”
Range(“B2”).Value = “高橋”
Range(“B3”).Value = “鈴木”
Range(“B4”).Value = “田中”
Range(“B5”).Value = “野村”
Range(“B6”).Value = “野村”
Range(“B7”).Value = “谷重”
Range(“C2”).Value = 100
Range(“C3”).Value = 80
Range(“C4”).Value = 60
Range(“C5”).Value = 50
Range(“C6”).Value = 30
Range(“C7”).Value = 10

‘抽出
Range(“A1″).AutoFilter Field:=1, Criteria1:=”A”

End Sub

Range(“A1″).AutoFilter Field:=1, Criteria1:=”A”」でフィルターで絞込をしています。「Field:=1」で1列目の値で、「Criteria1:=”A”」でAというグループで絞込を行います。

一覧表をフィルターで複数の値で絞り込む方法

ここでは、ExcelのVBA・マクロで一覧表をフィルターで絞り込む方法を紹介します。

ExcelのVBA・マクロで一覧表をフィルターで絞り込むには、AutoFilterを使います。

<サンプル>
Sub test40()
‘表の書式設定
Range(“A1:C1”).Interior.Color = rgbYellow
Range(“A1:C1”).Font.Color = rgbRed
Range(“A1:C1”).HorizontalAlignment = xlCenter
Range(“A1:C7”).Borders.Weight = xlThin
Range(“A1:C7”).Font.Name = “Meiryo UI”
Range(“A1:C7”).Font.Size = 12

‘表のデータ
Range(“A1”).Value = “グループ”
Range(“B1”).Value = “名前”
Range(“C1”).Value = “点数”
Range(“A2”).Value = “A”
Range(“A3”).Value = “B”
Range(“A4”).Value = “C”
Range(“A5”).Value = “A”
Range(“A6”).Value = “B”
Range(“A7”).Value = “C”
Range(“B2”).Value = “高橋”
Range(“B3”).Value = “鈴木”
Range(“B4”).Value = “田中”
Range(“B5”).Value = “野村”
Range(“B6”).Value = “野村”
Range(“B7”).Value = “谷重”
Range(“C2”).Value = 100
Range(“C3”).Value = 80
Range(“C4”).Value = 60
Range(“C5”).Value = 50
Range(“C6”).Value = 30
Range(“C7”).Value = 10

‘抽出
Range(“A1″).AutoFilter Field:=1, Criteria1:=”A”, Operator:=xlOr, Criteria2:=”B”

End Sub

Range(“A1″).AutoFilter Field:=1, Criteria1:=”A”, Operator:=xlOr, Criteria2:=”B”」でフィルターで絞込をしています。「Field:=1」で1列目の値で、「Criteria1:=”A”」でAというグループ、そして「Operator:=xlOr, Criteria2:=”B”」でAもしくはBと言うグループで絞込を行います。

複数の値でANDで条件を絞り込みしたい場合は、「Operator:=xlOr」を「Operator:=xlAnd」にします。

一覧表を複数の列の条件でフィルターで絞り込む方法

ここでは、ExcelのVBA・マクロで一覧表を複数の列の条件でフィルターで絞り込む方法を紹介します。

ExcelのVBA・マクロで一覧表を複数の列の条件でフィルターで絞り込むには、AutoFilterを使います。

<サンプル>
Sub test41()
‘表の書式設定
Range(“A1:C1”).Interior.Color = rgbYellow
Range(“A1:C1”).Font.Color = rgbRed
Range(“A1:C1”).HorizontalAlignment = xlCenter
Range(“A1:C7”).Borders.Weight = xlThin
Range(“A1:C7”).Font.Name = “Meiryo UI”
Range(“A1:C7”).Font.Size = 12

‘表のデータ
Range(“A1”).Value = “グループ”
Range(“B1”).Value = “名前”
Range(“C1”).Value = “点数”
Range(“A2”).Value = “A”
Range(“A3”).Value = “B”
Range(“A4”).Value = “C”
Range(“A5”).Value = “A”
Range(“A6”).Value = “B”
Range(“A7”).Value = “C”
Range(“B2”).Value = “高橋”
Range(“B3”).Value = “鈴木”
Range(“B4”).Value = “田中”
Range(“B5”).Value = “野村”
Range(“B6”).Value = “野村”
Range(“B7”).Value = “谷重”
Range(“C2”).Value = 100
Range(“C3”).Value = 80
Range(“C4”).Value = 60
Range(“C5”).Value = 50
Range(“C6”).Value = 30
Range(“C7”).Value = 10

‘抽出
Range(“A1″).AutoFilter Field:=1, Criteria1:=”A”
Range(“A1″).AutoFilter Field:=3, Criteria1:=”>=80″

End Sub

まず「Range(“A1″).AutoFilter Field:=1, Criteria1:=”A”」でフィルターで絞込をしています。「Field:=1」で1列目の値で、「Criteria1:=”A”」でAというグループで絞込を行います。

続いて「Range(“A1″).AutoFilter Field:=3, Criteria1:=”>=80″」でフィルターで絞込をしています。「Field:=3」で3列目の値で、「Criteria1:=”>=80″」で点数が80点以上の人だけを絞り込みしています。

一覧表を複数の条件で並べ替える方法

ここでは、ExcelのVBA・マクロで一覧表を複数の条件で並べ替える方法を紹介します。

ExcelのVBA・マクロで一覧表を複数の条件で並べ替えるには、Sortを使います。

<サンプル>Sub test36()
‘表の書式設定
Range(“A1:C1”).Interior.Color = rgbYellow
Range(“A1:C1”).Font.Color = rgbRed
Range(“A1:C1”).HorizontalAlignment = xlCenter
Range(“A1:C7”).Borders.Weight = xlThin
Range(“A1:C7”).Font.Name = “Meiryo UI”
Range(“A1:C7”).Font.Size = 12

‘表のデータ
Range(“A1”).Value = “グループ”
Range(“B1”).Value = “名前”
Range(“C1”).Value = “点数”
Range(“A2”).Value = “A”
Range(“A3”).Value = “B”
Range(“A4”).Value = “C”
Range(“A5”).Value = “A”
Range(“A6”).Value = “B”
Range(“A7”).Value = “C”
Range(“B2”).Value = “高橋”
Range(“B3”).Value = “鈴木”
Range(“B4”).Value = “田中”
Range(“B5”).Value = “松井”
Range(“B6”).Value = “野村”
Range(“B7”).Value = “谷重”
Range(“C2”).Value = 100
Range(“C3”).Value = 80
Range(“C4”).Value = 60
Range(“C5”).Value = 50
Range(“C6”).Value = 30
Range(“C7”).Value = 10

‘点数の降順でソート
Range(“A1”).Sort Key1:=Range(“A2”), Order1:=xlAscending, Header:=xlYes, 
Key2:=Range(“C2”), order2:=xlDescending

End Sub

Range(“A1”).Sort Key1:=Range(“A2”), Order1:=xlAscending, Header:=xlYes, 
Key2:=Range(“C2”), order2:=xlDescending」で一覧表のソートをしています。

まず、表の一番左端のセルを選択し、表全体を対象にソートをかけます。

Key1:=Range(“A2”)」でA列の値でソートするよう指示します。「Order1:=xlAscending」で昇順、「Header:=xlYes」で1行目はヘッダー行でありソートから除外するよう引数を指定しておきます。

さらに「Key2:=Range(“C2”)」でA列の値でソートするよう指示します。「order2:=xlDescending」で降順を指定します。

これでグループの昇順、点数の降順でソートができました。

フィルターを解除する方法

ここでは、ExcelのVBA・マクロでフィルターを解除する方法を紹介します。

<サンプル>
Sub test42()
ActiveSheet.AutoFilterMode = False
End Sub

まず「ActiveSheet.AutoFilterMode = False」でフィルターを解除しています。

一覧表をテーブルに変換する方法

ここでは、ExcelのVBA・マクロで一覧表をテーブルに変換する方法を紹介します。

ExcelのVBA・マクロで一覧表をテーブルに変換するには、ListObjects.Addを使います。

<サンプル>
Sub test43()
‘表の書式設定
Range(“A1:C1”).Interior.Color = rgbYellow
Range(“A1:C1”).Font.Color = rgbRed
Range(“A1:C1”).HorizontalAlignment = xlCenter
Range(“A1:C7”).Borders.Weight = xlThin
Range(“A1:C7”).Font.Name = “Meiryo UI”
Range(“A1:C7”).Font.Size = 12

‘表のデータ
Range(“A1”).Value = “グループ”
Range(“B1”).Value = “名前”
Range(“C1”).Value = “点数”
Range(“A2”).Value = “A”
Range(“A3”).Value = “B”
Range(“A4”).Value = “C”
Range(“A5”).Value = “A”
Range(“A6”).Value = “B”
Range(“A7”).Value = “C”
Range(“B2”).Value = “高橋”
Range(“B3”).Value = “鈴木”
Range(“B4”).Value = “田中”
Range(“B5”).Value = “野村”
Range(“B6”).Value = “野村”
Range(“B7”).Value = “谷重”
Range(“C2”).Value = 100
Range(“C3”).Value = 80
Range(“C4”).Value = 60
Range(“C5”).Value = 50
Range(“C6”).Value = 30
Range(“C7”).Value = 10

‘表を変換
ActiveSheet.ListObjects.Add SourceType:=xlSrcRange, Source:=Range(“A1:C7”)

End Sub

ActiveSheet.ListObjects.Add SourceType:=xlSrcRange, Source:=Range(“A1:C7”)」で一覧表をテーブルに変換しています。