ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

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  'すべてのデータを表示する'