excel

【Excel】エクセルのプルダウンで複数選択する方法(入力規則・プルダウン連動)

エクセルのプルダウンで複数選択する方法【VBAによる追記設定】 - 入力規則リストの作成
当サイトでは記事内に広告を含みます

Excelのプルダウンリストは、商品名や担当者、分類などを同じ表記で入力できる便利な機能です。

ただし、入力規則で作成した通常のリストでは、選択できる項目は1つだけです。

たとえば「東京」「大阪」「福岡」を同じセルへまとめて登録したい場合、標準機能だけでは後から選んだ値が前の値を上書きします。

そこで役立つのが、入力規則とVBAを組み合わせて、選択した項目を同一セルへ追記する方法です。

複数選択の基本ポイント

・元となるリストは入力規則で作成する

・複数選択はVBAのWorksheet_Changeイベントで実現する

・マクロ有効ブック形式で保存し、対象範囲を限定する

この記事では、プルダウンで複数選択する手順、区切り文字の変更、連動プルダウンへの応用、マクロを使わない代替案まで詳しく解説します。

サンプルデータでは、1行目を見出し行として扱います。

 

エクセルのプルダウンで複数選択する方法【VBAによる追記設定】

担当者 対応地域 備考
田中 東京、大阪 複数選択後の表示例
佐藤 福岡 1項目のみでも入力可能

それではまず、選択するたびに既存の文字列へ項目を追加する設定について解説していきます。

Excelのデータの入力規則だけでは複数選択はできないため、VBAを使って選択後のセル内容を書き換えます。

 

入力規則リストの作成

最初に、選択肢となる一覧を用意します。

たとえば別シートのA2からA5へ、東京、大阪、福岡、札幌のように候補を縦方向へ入力しましょう。

次に、複数選択を行いたいセル範囲を選択します。

ここではメインの表であるSheet1のB2からB100を対象にします。

リボンのデータタブからデータの入力規則を開き、設定の入力値の種類でリストを選択します。

エクセルのプルダウンで複数選択する方法【VBAによる追記設定】 - 入力規則リストの作成

元の値には、候補を入力した範囲を指定します。

同じシートなら =$F$2:$F$5 のように絶対参照で指定すると、対象セルを増やしても候補範囲がずれません。

候補一覧をテーブル形式にして名前を付けておくと、選択肢の追加や修正を管理しやすくなります。

入力規則を設定した時点では、セルの右側に矢印が表示され、候補を1つずつ選択できる状態です。

この段階では複数選択になっていないため、続いてVBAを設定します。

 

ワークシートへVBAコードを入力

続いては、選んだ値をセルの末尾へ追加するVBAコードを確認していきます。

Altキーを押しながらF11キーを押して、Visual Basic Editorを開きます。

左側のプロジェクトエクスプローラーで、プルダウンを設定したシートをダブルクリックしてください。

標準モジュールではなく、対象となるワークシートのコード画面へ記述することが重要です。

エクセルのプルダウンで複数選択する方法【VBAによる追記設定】 - ワークシートへVBAコードを入力
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oldValue As String
    Dim newValue As String

    If Intersect(Target, Range("B2:B100")) Is Nothing Then Exit Sub
    If Target.CountLarge > 1 Then Exit Sub

    On Error GoTo ExitHandler
    Application.EnableEvents = False

    newValue = Target.Value
    Application.Undo
    oldValue = Target.Value

    If oldValue = "" Then
        Target.Value = newValue
    ElseIf InStr(oldValue, newValue) = 0 Then
        Target.Value = oldValue & "、" & newValue
    Else
        Target.Value = oldValue
    End If

ExitHandler:
    Application.EnableEvents = True
End Sub

RangeのB2:B100は、複数選択を許可する範囲です。

自分の表でプルダウンを置いた列に合わせて変更しましょう。

選択肢が重複して追加されないよう、InStr関数で既に同じ文字があるかを確認しています。

 

マクロ有効ブックでの保存と動作確認

コードの入力後は、Visual Basic Editorを閉じてExcelへ戻ります。

通常のxlsx形式で保存するとVBAが保存されないため、Excelマクロ有効ブックのxlsm形式で保存してください。

ファイルタブから名前を付けて保存を選び、ファイルの種類をExcelマクロ有効ブックに変更します。

保存後にファイルを開き直した場合は、セキュリティ警告が表示されたときにコンテンツの有効化を選択します。

B2のプルダウンから東京を選び、もう一度プルダウンを開いて大阪を選択しましょう。

セル内に東京、大阪と表示されれば設定は完了です。

【操作のポイント】複数選択用のコードは対象シートのコード画面へ入れます。標準モジュールへ貼り付けるとWorksheet_Changeイベントが動作しません。

 

入力規則の範囲指定とプルダウンの作成

商品名 選択候補 入力規則の元の値
商品A 赤、青、黄 =$F$2:$F$4

続いては、複数選択の土台になる入力規則と候補範囲の指定を確認していきます。

候補が正しく表示されなければVBAも使いにくくなるため、リストの設計を先に整えることが大切です。

 

同じシートに候補一覧を置く方法

入力規則の範囲指定とプルダウンの作成 - 同じシートに候補一覧を置く方法

小規模な表では、入力欄の右側や下側に候補一覧を置く方法が手軽です。

たとえばF1に対応地域、F2からF5に各地域を入力します。

データの入力規則の元の値へ =$F$2:$F$5 と入力すると、範囲内の値がプルダウン候補になります。

候補セルに空白が混ざると、リスト内にも空白行が現れることがあります。

不要な空白、全角と半角の揺れ、似た名称の重複を事前に取り除いておきましょう。

 

別シートの名前定義を使う方法

入力規則の範囲指定とプルダウンの作成 - 別シートの名前定義を使う方法

続いては、候補一覧を別シートへ分ける方法を確認していきます。

別シートのセル範囲を入力規則の元の値へ直接指定できないExcel環境では、名前の定義を利用します。

数式タブから名前の管理を開き、新規作成を選びます。

名前を地域一覧とし、参照範囲へ =リスト!$A$2:$A$5 のように入力してください。

入力規則の元の値には =地域一覧 と指定します。

候補の管理用シートを非表示にしても、名前定義を経由したプルダウンは利用できます。

名前の定義は、入力規則の参照先を読みやすくする仕組みです。

複数の表で同じ候補を使う場合にも便利です。

 

テーブルと動的範囲の考え方

候補が増える可能性がある場合は、一覧をテーブルに変換しておくと管理しやすくなります。

候補範囲を選んでCtrlキーとTキーを押し、先頭行をテーブルの見出しとして使用する設定を確認します。

テーブルの末尾に新しい候補を入力すれば、一覧の範囲自体は自動で広がります。

ただし、入力規則がテーブル列をそのまま参照できない場合もあるため、名前の定義と組み合わせると安定します。

候補リストの更新後は、実際にプルダウンを開き、新しい項目が表示されるか確認しましょう。

【操作のポイント】候補一覧のセル番地を直接指定する方法は簡単ですが、一覧を増やす運用では名前の定義を使うと修正漏れを防げます。

 

区切り文字の変更と選択済み項目の扱い

選択順 読点区切り 改行区切り
東京→大阪 東京、大阪 東京
大阪

続いては、見やすい区切り文字への変更と、選択済み項目を扱う考え方を確認していきます。

複数選択リスト.xlsm – Excel − □ ×
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示 開発
貼り付け
太字 B
罫線
中央揃え
fx東京、大阪
A B C
1 担当者 対応地域 備考
2 田中 東京、大阪 ➤ 選択結果
3
プルダウンから次の候補を選ぶと、B2の末尾へ追加されます。

 

読点とカンマによる区切り

VBAコードの oldValue & “、” & newValue の部分が、値をつなげる区切り文字です。

日本語の資料では、読点の「、」を使うと文字列が自然に読めます。

CSVとして出力する予定がある場合、半角カンマは列の区切りとして扱われることがあるため注意が必要です。

社内システムへ貼り付けるデータなら、スラッシュや中黒など、そのシステムの仕様に合う文字を選びましょう。

区切り文字の変更例

読点の場合は oldValue & “、” & newValue

スラッシュの場合は oldValue & ” / ” & newValue

 

セル内改行による表示

複数の選択肢を縦に表示したい場合は、区切り文字を改行コードへ変更します。

VBAでは vbLf を使い、oldValue & vbLf & newValue のように記述します。

その後、対象セルで折り返して全体を表示する設定を有効にしてください。

ホームタブの配置グループから折り返して全体を表示するを選べば、セル内の改行を確認できます。

行の高さが自動調整されない場合は、行番号の境界をダブルクリックして高さを調整しましょう。

 

重複選択と削除の運用

同じ候補を何度も選ぶと、東京、東京のような重複が生まれると集計しにくくなります。

今回のコードでは、すでに選択済みの値は追加しない設定です。

一方で、選んだ項目をプルダウンから再選択して削除する機能は、基本コードには含まれていません。

削除したいときはセルを直接編集するか、内容をDeleteキーで消してから選び直す運用が簡単です。

項目数が多く、解除操作まで必要な場合は、チェックボックス付きのユーザーフォームを検討する場面です。

【操作のポイント】区切り文字は後から変更できますが、すでに入力済みのセルの表記は自動変換されません。運用開始前に表示ルールを決めましょう。

 

プルダウン連動と複数選択の組み合わせ

分類 商品 追加選択
飲料 コーヒー コーヒー、紅茶

続いては、親となるプルダウンの選択に応じて候補を変える連動プルダウンとの組み合わせを確認していきます。

 

親リストと子リストの整理

連動プルダウンでは、先に大分類を選び、その結果に応じて次の候補を絞り込みます。

たとえばA列の分類で飲料を選んだとき、B列の商品にはコーヒー、紅茶、ジュースだけを表示する仕組みです。

候補一覧の見出しを飲料、食品のように作り、それぞれの候補範囲に同じ名前を定義します。

日本語の見出しを名前に使う場合は、空白や使えない記号がないか確認してください。

親リストの文字列と名前定義の名前を一致させることが、連動設定の基本です。

 

INDIRECT関数による参照

子リスト側の入力規則では、元の値にINDIRECT関数を使います。

2行目を対象にした数式例

=INDIRECT($A2)

A2に飲料と入力されている場合、飲料という名前で定義した候補範囲を参照します。

この数式は、A列の分類名を文字列として受け取り、同名の名前定義へ変換する働きがあります。

行ごとに異なる分類を選ぶ場合、列だけを固定した $A2 の指定が扱いやすいでしょう。

親リストが未入力の状態では、子リストの候補が表示されないことがあります。

 

連動先へのVBA適用範囲

複数選択用のVBAは、連動プルダウンの子リスト列だけに適用するのが安全です。

たとえば分類がA列、商品がB列なら、コードのRangeをB2:B100へ設定します。

親リストのA列まで対象に含めると、分類名まで追記され、連動条件が崩れるおそれがあります。

分類を変更したときは、以前の分類で選択した商品を削除してから選び直す運用がおすすめです。

親項目の変更と子項目の複数選択は別の処理として考えると、エラーを防ぎやすくなります。

【操作のポイント】連動プルダウンでは親列を単一選択にし、子列だけを複数選択の対象に設定します。

 

VBAを使えない場合の代替入力方法

方法 入力例 向く場面
横列に分ける 東京|大阪|福岡 集計を重視する場合

続いては、マクロを使えない環境でも複数の情報を扱いやすくする代替方法を確認していきます。

 

選択項目を別々の列へ分ける方法

最も集計しやすい方法は、対応地域1、対応地域2、対応地域3のように列を分けることです。

各列に同じ入力規則を設定すれば、VBAなしで複数の候補を登録できます。

フィルター、COUNTIF関数、ピボットテーブルでの分析がしやすい点もメリットです。

一つのセルに文字列を詰め込む方式は見た目が簡潔ですが、後から件数を集計する作業では手間が増えるかもしれません。

 

チェックボックスの利用

開発タブを利用できる場合は、フォームコントロールのチェックボックスを配置する方法もあります。

各候補の横にチェックボックスを置き、リンクするセルへTRUEまたはFALSEを返します。

チェック状態を数式で連結すれば、選択済み項目を別セルへ表示できます。

ただし、行数が多い表ではチェックボックスの管理が複雑になりやすいため、少数の候補に向く方法です。

 

Microsoft 365のTEXTJOIN関数

候補ごとにチェック結果をTRUEまたはFALSEで管理している場合、TEXTJOIN関数で選択済みの項目をまとめられます。

数式例

=TEXTJOIN(“、”,TRUE,IF(B2:D2=TRUE,B$1:D$1,””))

1行目に候補名、2行目に選択状態を置く構成です。

この数式では、B2からD2がTRUEの列に対応する見出しだけを読点で連結します。

Microsoft 365以外では、配列数式としての扱いが異なる場合があります。

マクロ禁止の共有ファイルでは、列分割とTEXTJOINの組み合わせが実務的です。

【操作のポイント】集計や他システムへの取込を予定している表では、複数選択を1セルにまとめる前に、列を分ける設計も検討します。

 

まとめ エクセルのプルダウン連動・入力規則で複数選択する方法

確認項目 重要点
複数選択 入力規則とVBAを組み合わせる
保存形式 xlsm形式で保存する

Excelのプルダウンで複数選択を実現するには、候補を入力規則で用意し、Worksheet_ChangeイベントのVBAで選択値を追加します。

通常の入力規則は1セルにつき1項目の選択機能であり、複数選択はマクロによる補助が必要です。

コードは対象シートへ記述し、複数選択を許可する範囲をRangeで正しく指定しましょう。

ファイルはExcelマクロ有効ブックとして保存し、信頼できるファイルだけでマクロを有効にすることも大切です。

連動プルダウンでは、親リストを単一選択、子リストを複数選択と分けると管理しやすくなります。

一方で、集計を重視する表やマクロを利用できない共有環境では、候補ごとに列を分ける方法が適しています。

入力する人、後から集計する人、データを利用するシステムまで考えたうえで、扱いやすい複数選択の形式を選びましょう。