Excelでドロップダウンリストの選択に応じて列を表示・非表示にする方法
Excelでは、ドロップダウンリストの選択内容に応じて特定の列を自動的に表示・非表示にしたり、データを絞り込んで抽出したりできます。本記事では、まず基本的なドロップダウンリストの作成方法を解説し、その後、VBAマクロを組み合わせた実践的なテクニックを2つの例を通してわかりやすく紹介します。
Excelでドロップダウンリストを作成する基本手順
手順:
- ドロップダウンリストを作成したいセルを選択します(ここでは例としてE3セルを使用します)。

- リボンの[データ]タブを開きます。
- [データの入力規則]をクリックします。

- [データの入力規則]ダイアログボックスが開いたら、[設定]タブを選択します。
- [入力値の種類]のドロップダウンから[リスト]を選びます。

- [元の値]の入力ボックスに「Active」と「Inactive」をカンマ区切りで入力し、[OK]をクリックします。

- 設定が完了すると、E3セルに「Active」「Inactive」の2つの選択肢を持つドロップダウンリストが表示されます。

例1:ドロップダウンリストの選択に基づいて列を表示・非表示にする
手順:
- シート見出しを右クリックし、[コードの表示]を選択します。

- VBAエディターに以下のコードを貼り付けます。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = ("$E$3") Then
If Target.Text = "Active" Then
Columns("C").EntireColumn.Hidden = True
Columns("B").EntireColumn.Hidden = False
ElseIf Target.Text = "Inactive" Then
Columns("C").EntireColumn.Hidden = False
Columns("B").EntireColumn.Hidden = True
End If
End If
End Sub

- Ctrl + Sキーでコードを保存し、コードエディターを閉じます。
- ワークシート上で、アクティブなメンバーの列を非表示にして非アクティブなメンバーの列だけを残したい場合は、ドロップダウンリストから[Inactive]を選択します。

- 次に、ドロップダウンリストから[Active]を選択してみましょう。

- すると、アクティブなメンバーの列が表示され、非アクティブなメンバーの列が非表示になります。

コードの解説:
このコードでは以下の処理を行っています。
- EntireColumnプロパティを使用して、アクティブおよび非アクティブなメンバーが含まれる列全体を選択しています。
- 続いて、.HiddenプロパティをTrueまたはFalseに設定することで、特定の列の表示・非表示を切り替えています。
あわせて読みたい: Excelでドロップダウンリストから使用済みの項目を削除する方法
例2:ドロップダウンリストの選択でデータをフィルター抽出する
今回使用するデータセットには、「果物(Fruit)」「野菜(Vegetables)」「魚介類(Fish)」の3つのカテゴリーに属する7つの商品の売上データが含まれています。

手順:
- B2セルに、「All(すべて)」「Fruit(果物)」「Vegetable(野菜)」「Fish(魚介類)」の4つの選択肢を持つドロップダウンリストを作成します。
- ドロップダウンリストの作成方法は、前述の基本手順をご参照ください。

- シート見出しを右クリックして[コードの表示]を選択し、Visual Basic Editorを開きます。

- 以下のコードをエディターに入力します。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Variant, b As String
If Target.Column = 2 And Target.Row = 2 Then
b = Target.Value2
With Range("C5:I5")
Application.ScreenUpdating = False
.EntireColumn.Hidden = (b <> "All")
If b <> "All" Then
For Each a In .Cells
If a = b Then a.EntireColumn.Hidden = False
Next
End If
Application.ScreenUpdating = True
End With
End If
End Sub

- Ctrl + Sキーでコードを保存し、エディターを閉じます。
- これで、ドロップダウンリストで選択したカテゴリーに基づいてデータセットをフィルターできるようになりました。以下のスクリーンショットはそれぞれの出力結果です。
最初の画像はFruit(果物)カテゴリーの一覧です。

次にVegetable(野菜)カテゴリーを選択します。

続く画像はFish(魚介類)カテゴリーの一覧です。

最後に、すべてのカテゴリーを選択した状態です。

コードの解説:
- 以下のコード行では、対象となるB2セルを列番号と行番号で指定しています。例1ではAddressプロパティを使用しましたが、ここでは異なるアプローチを採用しています。
If Target.Column = 2 And Target.Row = 2 Then
- 変数bには、ドロップダウンリストで選択されたカテゴリーの値が格納されます。
- 次のコードは、売上一覧の中でカテゴリー名が含まれるセル範囲を定義しています。各セルの値が変数bと照合されます。
With Range("C5:I5")
- 変数bの値がRange("C5:I5")内のいずれかの値と一致した場合、そのセルに関連付けられた列全体が選択され、HiddenプロパティがFalseに設定されることで、その列は表示状態に保たれます。
あわせて読みたい: Excelでドロップダウンリストの重複項目を削除する方法
注意点
VBAコードでは、ループ処理を開始する前にApplication.ScreenUpdating = Falseを設定し、ループ終了後にApplication.ScreenUpdating = Trueへ戻しています。これは画面の再描画を一時的に停止させることで、ドロップダウンリストの選択を変更した際の応答速度を大幅に向上させるためです。
練習用ワークブックのダウンロード
実際に操作を試してみたい方は、こちらのワークブックをダウンロードしてご利用ください。
関連記事
- Excelで複数列にドロップダウンリストを作成する方法
- Excelで検索可能なドロップダウンリストを作成する
- Excelのドロップダウンリストに空白の選択肢を追加する方法
- Excelで選択内容に基づいてデータを抽出するドロップダウンフィルターの作成方法
- Excelでドロップダウンから選択して別シートからデータを取得する方法
- Excelでドロップダウンリスト付きフォームを作成する方法
- Excelでドロップダウンリストのセルを色で塗りつぶしつつ文字を非表示にする方法
- [解決済み] Excelでドロップダウンリストの「空白を無視する」が機能しないときの対処法
- Excelでドロップダウンリストから複数選択する方法
- Excelで入力規則のドロップダウンリストをオートコンプリートする方法
<< Excelのドロップダウンリスト | Excelでのデータの入力規則 | Excelの学習 に戻る
-
Windows PCのExcelで予測シートを作成する方法|時系列データから将来を予測
時系列データの分析は、市場のトレンドを把握するために非常に有効な手段です。Excelの「予測シート」機能を使えば、ワンクリックで過去データに基づく将来予測を作成でき、現在の傾向だけでなく今後の動きも読み取ることができます。この記事では、Microsoft Office(Microsoft 365にも搭載)に用意されている予測機能について、その使い方を詳しく解説します。 Excelで予測シートを作成する手順 予測の作成はとても簡単です。日付や時刻などの時系列データと、それに対応する数値データが揃っていれば、すぐに予測シートを作成できます。ただし、作業を始める前に、いくつか押さえておきたいポイント
-
Microsoft Defender Application Guard for Officeとは?必要システム要件、FAQなどを徹底解説
Microsoft Defender Application Guard for Officeは、仮想化技術を活用してマルウェアからシステムを保護するセキュリティ機能です。ハードウェアベースの仮想化により、不審なMicrosoft Officeファイルを隔離されたコンテナ内で開くため、PCへの被害や感染を防ぐことができます。 多くの方は、Microsoft Officeの保護されたビュー(Protected View)をご存じかもしれませんが、Application Guardはそれとは異なる機能です。保護されたビューでは、ファイルを通常どおり開きますが、編集操作が制限されます。 一方、Ap