この記事では、エクセルにてフィルタを横方向にかける方法について解説していきます。
これらの処理としては、主に
・行列を入れ替えてフィルタをかける
・グループ化を使用する
・VBAを利用する
ことによって解決することができます。
では、実際のサンプルをみていきましょう。
エクセルにてフィルタを横方向にかける方法1【行方向:横向き】
エクセルにはフィルタを横方向にかけるというやり方は存在しないので、横方向にフィルタをかける場合はいくつかステップが必要となります。
一番簡単なやり方としては、リストの行と列を入れ変えた後フィルタをかける方法です。
このようなリストで横向きにフィルタをかけたい場合は、まずリストの行と列を入れ変えます。
範囲を選択し、形式を選択して貼り付けをします。この時、「行と列を入れ替える」にチェックを入れます。
この状態にしてからフィルタをかけるやり方が一番簡単です。
これで横方向にフィルタをかけるのと同様の処理が完了となります。
エクセルにてフィルタを横方向にかける方法2【行方向:横向き】
上記の他に、リストはそのままで横のフィルタをかけたい場合、グループ化するというやり方もあります。
上記の表で営業所ごとにフィルタをかけたい場合、グループ化をすることで解決できます。
グループ化させたい列を選択し、データタグのグループ化をクリックします。
このように列に対してアウトラインが設定され、「―」をクリックすれば不要な行をフィルタにかけることができます。
再度表示させたい場合は「+」をクリックするだけなので、とても簡単にフィルタをかけることができます。
これが横方向にフィルタをかける方法の2つ目です。
エクセルにてフィルタを横方向にかける方法3【行方向:横向き:マクロ(VBA)】
上記の他に、VBAを利用するという方法もあります。
対象のシート名で右クリック>コードの表示をクリックします。
VBAのコードを入力する画面になるので、このリストの中で空白セルがあった場合、列を非表示にする、というVBAコードを入力します。
VBAコードの意味の概要
・このシートにVBAを組み込みます。
Private Sub Worksheet_Change(ByVal Target As Range)
‘Updateby Extendoffice
Dim cl As Range
・範囲(“a2:k2”)内が空白の場合、
Range(“a2:k2”).SpecialCells(xlCellTypeBlanks).Select
For Each cl In Selection
r = cl.Column
‘MsgBox r
・列を非表示にします。
Columns(r).EntireColumn.Hidden = True
Next
End Sub
ざっくり説明を入れると上記のようになります。
範囲は必要に応じて変更しましょう。
また、Columnsは列を表しています。例えば行を非表示にしたい場合は、Rowと入力します。
コードを入力したら画面を閉じます。
2行目のコーヒーが「●」となっている営業所のみを抽出します。
まず、通常のオートフィルタで商品名コーヒーを選択します。
その後、表の中のどこか(今回はB2セル)をダブルクリックし、エンターを押します。
「●」のみが表示されました。
まとめ エクセルにてフィルタを行方向にかける方法【横向き:マクロ(VBA)も】
この記事では、エクセルにてフィルタを横方向にかける方法について解説しました。
エクセルでは横方向のオートフィルタをは設定されていません。
リストのままフィルタをかけるのはかなり手間がかかるので、問題なければ新規シートに行と列を入れ替えてコピペするやり方が一番良いかと思います。
とはいえ、VBAを使いこなせればエクセル上級者です。
機会があれば覚えてみるのも良いかもしれません。