Excelマクロ覚書 ~データ抽出編~
図書館で借りてきた某書籍の覚書です。
【データを抽出する】
データを抽出するにはAutoFilterメソッドを使う。
Rangeオブジェクト.AutoFilter Field:=対象列, Criteria1:=条件
Range("D3").CurrentRegion.AutoFilter _ 'A3を含む範囲(表)にオートフィルターを抽出する'
Field:=4, Criteria:="おれ"'4列目が「おれ」のデータを抽出する'
【指定した順位までのデータを抽出する】
データを抽出するにはAutoFilterメソッドの引数にOperatorを設定する。
Rangeオブジェクト.AutoFilter Field:=対象列, Criteria1:=条件, Operator:=フィルターの種類
※種類
xlAnd |
:抽出条件1と抽出条件2の両方を満たす |
xlBottom1OItems |
:抽出条件1で指定される項目数(低い値) |
xlBottom1OPercent | :抽出条件1で指定される割合(低い値) |
xlFilterCellColor | :セルの色 |
xlFilterDynamic | :動的フィルター |
xlFilterFontColor | :フォントの色 |
xlFilterIcon | :フィルターアイコン |
xlFilterValues | :フィルターの値 |
xlOr | :抽出条件1または抽出条件2のどちらかを満たす |
xlTop10Items | :抽出条件1で指定される項目数(高い値) |
xlTop10Percent | :抽出条件1で指定される割合(高い値) |
Range("D3").CurrentRegion.AutoFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する'
Field:=4, Criteria:=3, Operator:=xlTopItems'4列目が上位3名のデータを抽出する'
指定した数値以上のデータの値を抽出するには、Criteriaで指定する。
Range("D3").CurrentRegion.AutoFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する'
Field:=4, Criteria:">=2000"'4列目の値が200以上のデータを抽出する'
平均以上・平均以下で抽出するには、Criteriaで指定する。
xlFilterAboveAverage |
:平均以上 |
xlFilterBottomAverage |
:平均以下 |
Range("D3").CurrentRegion.AutoFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する'
Field:=4, Criteria:xlFilterAboveAverage, _
Operator:=xlFilterDynamic '平均以上のデータを抽出する'
セルの色で抽出するには、OperatorをxlFilterCellColorに指定する。
Range("D3").CurrentRegion.AutoFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する'
Field:=6, Criteria:=RGB(255, 0, 0) _
, Operator:=xlFilterCellColor'6列目のセルの色が「赤」のデータを抽出する'
文字列で抽出するには、Criteria1を変更する。
Range("D3").CurrentRegion.AutoFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する'
Field:=4, Criteria:="栃木県"'4列目が「栃木県」のデータを抽出する。'
Or条件で抽出する場合、OperatorにxlOrを指定する。
Rangeオブジェクト.AutoFilter Field:=対象列, Criteria1:=条件1, Criteria2:=条件2, Operator:=xlOr
Range("A3").CurrentRegion.AutoFilter _ 'A3を含む範囲(表)にオートフィルターを抽出する'
Field:=4, Criteria1:="東京都", Criteria2:="神奈川県" _
, Operator:=xlOr'4列目が「東京都」もしくは「神奈川県」で始まるデータを抽出する。'
And条件で抽出する場合、複数のAutoFilterを指定する。
Rangeオブジェクト.AutoFilter Field:=対象列, Criteria1:=条件1
With Range("A3").CurrentRegion _
.AutoFilter Field:=4, Criterial:=">=10"
.AutoFilter Field:=5, Criterial:="岩手県"
End With
【重複しないリストを抽出する】
重複しないリストを抽出するにはAdvancedFilterメソッドを使う。
Rangeオブジェクト.AdvancedFilter Action:=動作, CopyToRange:=コピー先, Unique:=重複
※動作
xlFilterCopy | :抽出したデータをコピーする |
※コピー先
コピー先セル | :コピー先セルを指定する |
※重複
True |
:重複するデータを無視 |
Range("A3:G24").CurrentRegion.AdvancedFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する。重複するデータはコピーしない'
_
Action:=xlFilterCopy, CopyToRange:=Range("G3")
, Unique:=True'抽出結果をセルG3以降にコピーする'
【"年"、"月"で抽出する】
"年"、"月"で抽出するには、AutoFilterメソッドのOperator引数に値を設定する。
Rangeオブジェクト.AutoFilter Field:=対象列, Criteria1:=条件, Operator:=フィルターの種類
</tbod</tbod</tbod</tbod</tbod</tbod</tbod</tbod</tbod
:来月:今年
xlFilterTommorow |
:明日 |
xlFilterToday |
:今日 |
xlFilterYesterday |
:昨日 |
xlFilterNextWeek |
:来週 |
xlFilterThisWeek |
:今週 |
xlFilterLastWeek |
:先週 |
xlFilterNextMonth |
:来月 |
xlFilterThisMonth |
:今月 |
xlFilterLastMonth |
:先月 |
xlFilterNextQuarter |
:次の四半期 |
xlFilterThisQuarter |
:今四半期 |
xlFilterLastQuarter |
:前四半期 |
xlFilterNextYear |
:来年 |
xlFilterThisYear |
:今年 |
xlFilterLastYear |
:前年 |
xlFilterYearToDate |
:今年の初めから今日まで |
Range("A3:G24").CurrentRegion.AutoFilter _ 'D3を含む範囲(表)にオートフィルターを抽出する。'
Field:=1, Criterial:=xlFilterThisYear _
, Operator:=xlFilterDynamic '1列目が「今年」のデータを抽出する'
【オートフィルターを解除する】
すべてのデータを表示するには、ShowAllDataメソッドを使う。
Worksheetオブジェクト.ShowAllData
Worksheets("Sheet1").ShowAllData 'すべてのデータを表示する'