範囲にオートフィルターを設定する
Dim wb = New XLWorkbook Dim ws = wb.Worksheets.Add("オートフィルター") ws.Cell("A1").Value = "タイトル" ws.Cell("A2").Value = "うしおととら" ws.Cell("A3").Value = "進撃の巨人" ws.Cell("A4").Value = "GS美神 極楽大作戦!!" ws.Cell("B1").Value = "人物" ws.Cell("B2").Value = "うしお" ws.Cell("B3").Value = "ミカサ" ws.Cell("B4").Value = "おキヌ" ws.RangeUsed.SetAutoFilter 'オートフィルターを解除するには: 'ws.AutoFilter.Clear ' または 'ws.SetAutoFilter(False) ' または 'ワークシートの適当な範囲(Range)に対して上記のメソッドを呼び出す wb.SaveAs("D:\test\AutoFilter.xlsx")
値を抽出する
Dim wb = New XLWorkbook Dim ws = wb.Worksheets.Add("オートフィルター") 'データの用意 ws.Cell("A1").SetValue("数字") _ .CellBelow.SetValue(2) _ .CellBelow.SetValue(3) _ .CellBelow.SetValue(3) _ .CellBelow.SetValue(5) _ .CellBelow.SetValue(1) _ .CellBelow.SetValue(4) ws.Cell("B1").SetValue("数字") _ .CellBelow.SetValue(7) _ .CellBelow.SetValue(8) _ .CellBelow.SetValue(10) _ .CellBelow.SetValue(9) _ .CellBelow.SetValue(7) _ .CellBelow.SetValue(6) 'オートフィルターの2列目で数字の 7, 8, 6 を抽出 ws.RangeUsed.SetAutoFilter.Column(2) _ .AddFilter(7) _ .AddFilter(8) _ .AddFilter(6) 'オートフィルターの1列目で昇順ソート ws.AutoFilter.Sort(1) wb.SaveAs("D:\test\AutoFilter.xlsx")
カスタムフィルタ
Dim wb = New XLWorkbook Dim ws = wb.Worksheets.Add("オートフィルター") 'データの用意 ws.Cell("A1").SetValue("文字") _ .CellBelow.SetValue("B") _ .CellBelow.SetValue("C") _ .CellBelow.SetValue("C") _ .CellBelow.SetValue("E") _ .CellBelow.SetValue("A") _ .CellBelow.SetValue("D") ws.Cell("B1").SetValue("文字") _ .CellBelow.SetValue("G") _ .CellBelow.SetValue("J") _ .CellBelow.SetValue("F") _ .CellBelow.SetValue("K") _ .CellBelow.SetValue("I") _ .CellBelow.SetValue("H") 'オートフィルターの1列目で「B 以上 D 以下」の条件を設定 ws.RangeUsed.SetAutoFilter.Column(1).Between("B", "D") 'オートフィルターの2列目で降順ソート ws.AutoFilter.Sort(2, XLSortOrder.Descending) wb.SaveAs("D:\test\AutoFilter.xlsx")
上記コードの実行結果は下図のようになるはずでした。
しかし、実際には下図のようになりました。(A 列に “E” があってはいけないはずです)
いろいろ試してみたところ、Excel 上でフィルタの[再適用]ボタンをクリックすると “E” が消えて想定通りの結果になりました。
ちなみに、コードの中に ws.AutoFilter.Reapply を入れてもダメでした。
それから、今回は2列のデータでオートフィルタを試したら上記のようにちょっと変な結果になったわけですが、1列のデータの場合は最初から正しい結果でした。
カスタムフィルタの設定状態を確認するには、フィルタをクリック>[テキストフィルター]>[ユーザー設定フィルター]をクリックします。