エクセルでドロップダウンリストを複数選択する方法 (3つの方法) - Yahoo!

  • これを共有
Hugh West

状況によっては、ドロップダウンリスト内で複数の値を選択する必要があります。 このチュートリアルでは、ドロップダウンリストで複数選択を行う方法を紹介します。 このセッションでは、Excel 2019を使用していますが、お好みのバージョンを使用して自由に感じなさい。

セッションに入る前に、例のベースとなるデータセットについて知っておきましょう。

ここでは、いくつかの文房具の要素を使用して、ドロップダウンリストを作成し、そこで複数の項目を選択することにします。

これは単純なデータセットであることに注意してください。 実際のシナリオでは、もっと大規模で複雑なデータセットに遭遇することがあります。

練習用ワークブック

練習用ワークブックは、下記リンクからダウンロードしてください。

ドロップダウン・リストから複数選択する.xlsm

ドロップダウン・リストでの複数選択

まずは、文房具をベースにドロップダウンリストを作成する必要があります。 さっそく作ってみましょう。 ドロップダウンリストの作り方については、こちらの記事をご覧ください。

での データバリデーション ダイアログボックスで リスト のデータ型で、項目のセル範囲を挿入します。

B4:B11 は、文房具の要素を保持する範囲です。 ここで、ドロップダウンリストを見つけます。

続きを読む 選択範囲に応じたExcelのドロップダウンリスト

1.複数項目の選択(重複選択可)

従来のドロップダウンリストでは、常に1つの項目が選択されます。 ここでは、次のように選択されています。 ペン をリストから選択します(下図)。

ここで、別の項目を選択すると、例えば ペンシル

であれば、前の値に置き換わります。 ペンシル が選択されたままになります。

複数の項目を選択するためには ブイビーエー コードを開きます。 Microsoft Visual Basic for Applications ウィンドウ ALT + F11 をクリックすると開きます)。

ドロップダウンリストで複数の項目を選択したいワークシート名または番号をダブルクリックします。 その特定のシートのコードウィンドウが表示されます。

以下は、そのコードウィンドウです。 シート2 をワークブックに追加します(このシートにはドロップダウン・リストがあります)。

コードウィンドウが開いたら、そこに次のコードを挿入します。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = ""Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.UndoOldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

コードを保存して、今度はドロップダウン・リストから値を選択してみてください。

選択したこと ペンシル を選択すると、別の項目が選択されます。 ノートブック そしてご覧の通り、2つのアイテムが見つかりました(下の画像)。

このコードによって、選択を繰り返すことができます。 例えば、次のように選択します。 ペンシル をもう一度。

を選択すると、その項目が再び表示されます。

コード説明

2つの文字列を宣言しています。 旧価値 ニューバリュー .

でドロップダウンリストを作ったのがわかると思います。 D4 セル、そのためターゲットアドレスは D4 を使用して、セルがデータバリデーションを使用しているかどうかを再確認しています。 ターゲット.SpecialCells .

値が選択されると、イベントをオフにして( Application.EnableEvents = False に格納し、変更によって再びイベントが発生しないようにします。 そして、選択した項目を ニューバリュー .

変更を元に戻した後、その値を 旧価値 を確認します。 オールドバリュー が空かどうか。 もし空なら(1つの値しか選択されていないことを意味する),その場合は ニューバリュー それ以外の場合は オールドバリュー ニューバリュー .

イベントを終了する前に、必要であれば変更できるように、リセットします。

続きを読む 複数依存のドロップダウン・リスト Excel VBA

2.ドロップダウンリストから複数の項目を選択する(一意選択のみ)

前項では、複数選択で繰り返しが可能な場合を説明しましたが、繰り返しが不要な場合は、本項に従ってください。

このデモでは便宜上、別のシートを使用します。 今回はSheet3です。 このシートのコードウィンドウに次のコードを記述してください。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value...Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", & Newvalue Else: Target.Value = Oldvalue End If End If Application.EnableEvent = True Exitsub: Application.EnableEvent = True End Sub. 

以前のコードと比較して、何か違いがありますか!? よく見てみると、わずかな違いがあることがわかると思います。

ここでは ブイビーエー という機能 インストル . インストル この関数は、文字列の中で部分文字列が最初に現れる位置を返します。 詳細は、INSTRの記事を参照してください。

この論理演算をInStr(1, Oldvalue, Newvalue) = 0として、値が見つかったかどうかを確認した。 論理演算の結果が (not found earlier)であれば、その項目を選択し、先の値と連結することができます。

コードを保存して、今度は既に選択されている項目を選択してみてください。

ここでは、すでに選択されている ペンシル 重複した値を選択することはできません。

続きを読む Excelで別のシートからドロップダウンリストを作成する方法

3.改行で項目を選択する

ここまでは、項目がカンマで区切られていることがわかりました。 ここでは、選択された項目を改行で並べることにします。

簡単のために、いくつかのセルをマージしています。 D4 そのためには、結合したいセルを選択して Merge & Center から アライメント のセクションを参照してください。 ホーム タブで表示します。

セルの高さがより高くなります。

では、改行で項目を区切るコードを見てみましょう。 次のコードを使います。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value...Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub. 

前のコードと違うのは、今回は vbNewLine 中途半端 OldValue NewValue .

vbNewLine は、項目間に新しい行を提供します。

ここで、項目を選択します。

私たちは、アイテムを選択します ペン 次に、別の要素を選択します。

2つのアイテムが異なるラインになっていることがわかります。

ここでは、2つの値が2つの行に分かれています。 別の値を選択すると、その値が別の行に追加されます。 すべての値は新しい行になります。

なお、項目を区切るために別の区切り文字を使いたい場合は、二重引用符で囲んで、その区切り文字を vbNewline .

結論

以上、ドロップダウンリストで複数選択する方法を紹介しました。 参考になれば幸いです。 分かりにくいところがあれば、コメントください。 また、他に見落とした方法があれば教えてください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。