Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

この記事では、ドロップダウン リストから重複した値を削除する方法を紹介します VBA を使用した Excel のワークシートの 一意の値のみを保持します。少なくとも 1 回と 1 回だけ出現する一意の値を抽出する方法を学習します。

Excel VBA (クイック ビュー) を使用したドロップダウン リストの一意の値

Sub Drop_Down_List_Unique_Values_At_Least_Once()

List_Location = "B3"

Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")

Range(List_Location).Validation.Delete

Unique_Data = ""

Count = 0

For i = LBound(Data) To UBound(Data)
    Unique_Values = Split(Unique_Data, ",")
    For j = LBound(Unique_Values) To UBound(Unique_Values)
        If Data(i) = Unique_Values(j) Then
            Count = 1
            Exit For
        End If
    Next j
    If Count = 0 Then
        If Unique_Data = "" Then
            Unique_Data = Unique_Data + Data(i)
        Else
            Unique_Data = Unique_Data + "," + Data(i)
        End If
    End If
    Count = 0
Next i

Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

Excel VBA でドロップダウン リストに一意の値を保持する方法

ここでは、セル B3 にドロップダウン リストがあります。 いくつかの国の名前を含む Excel ワークシートの。

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

しかし、ご覧のとおり、リストでは一部の名前が繰り返されています。ドイツが 3 回繰り返され、イタリアが 2 回繰り返されたように。

今日の目的は、重複する値をドロップダウン リストから削除し、一意の値のみを保持することです。

1.少なくとも 1 回表示されるドロップダウン リストに一意の値を保持するマクロの開発

まず、マクロを作成します ドロップダウン リストに少なくとも 1 回表示される一意の値を保持します。

たとえば、上記のリストの場合、マクロの出力は ドイツ、イタリア、フランス、イギリス .

VBA この目的のためのコードは次のとおりです:

⧭ VBA コード:

Sub Drop_Down_List_Unique_Values_At_Least_Once()

List_Location = "B3"

Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")

Range(List_Location).Validation.Delete

Unique_Data = ""

Count = 0

For i = LBound(Data) To UBound(Data)
    Unique_Values = Split(Unique_Data, ",")
    For j = LBound(Unique_Values) To UBound(Unique_Values)
        If Data(i) = Unique_Values(j) Then
            Count = 1
            Exit For
        End If
    Next j
    If Count = 0 Then
        If Unique_Data = "" Then
            Unique_Data = Unique_Data + Data(i)
        Else
            Unique_Data = Unique_Data + "," + Data(i)
        End If
    End If
    Count = 0
Next i

Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧭ 出力:

コードを実行します。セル B3 のドロップダウン リストから重複した値を削除します

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧭ 注:

コードを実行する前に、ドロップダウン リストでワークシートをアクティブにすることを忘れないでください。また、コードを実行する前に、必要に応じてリストの場所のセル参照を変更してください。

続きを読む: Excel で一意の値を持つドロップダウン リストを作成する方法 (4 つの方法)

2. 1 回だけ表示されるドロップダウン リストに一意の値を保持するマクロの作成

今回はマクロを開発します ドロップダウン リストに 1 回だけ表示される一意の値を保持します。

たとえば、上記のリストの場合、マクロの出力は フランス、イギリスになります .

VBA この目的のためのコードは次のとおりです:

⧭ VBA コード:

Sub Drop_Down_List_Unique_Values_Exactly_Once()

List_Location = "B3"

Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")

Unique_Data = ""

Range(List_Location).Validation.Delete

Count = 0

For i = LBound(Data) To UBound(Data)
    For j = LBound(Data) To UBound(Data)
        If j <> i And Data(i) = Data(j) Then
            Count = 1
            Exit For
        End If
    Next j
    If Count = 0 Then
        If Unique_Data = "" Then
            Unique_Data = Unique_Data + Data(i)
        Else
            Unique_Data = Unique_Data + "," + Data(i)
        End If
    End If
    Count = 0
Next i

Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧭ 出力:

コードを実行します。セル B3 のドロップダウン リストから重複する値を削除します

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧭ 注:

コードを実行する前に、ドロップダウン リストでワークシートをアクティブにすることを忘れないでください。また、コードを実行する前に、必要に応じてリストの場所のセル参照を変更してください。

関連コンテンツ: Excel でドロップダウン リストから複数選択する方法 (3 つの方法)

類似の読み方:

  • Excel での選択に基づいてデータを抽出するためのドロップダウン フィルタの作成
  • 色付きの Excel ドロップダウン リストを作成する方法 (2 つの方法)
  • Excel ドロップダウン リストが機能しない (8 つの問題と解決策)
  • Excel の自動更新ドロップダウン リスト (3 つの方法)
  • Excel のドロップダウン リストから値を選択する VBA (2 つの方法)

3.ドロップダウン リストに一意の値を入力するユーザー フォームの開発

最後に、UserForm を作成します ドロップダウン リストから重複する値を削除し、VBA で一意の値のみを保持するには .

⧪ ステップ 1:ユーザーフォームを開く

[挿入]> [ユーザー フォーム] に移動します VBA のオプション 新しい UserForm を開くエディタ .新しいユーザーフォーム UserForm1 と呼ばれる

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧪ ステップ 2:ツールを UserForm にドラッグする

UserForm 以外に 、ツールボックスを取得します . ツールボックスの上にカーソルを移動します 3 つのラベルをドラッグします および 2 つのリスト ボックス (Label1 の下 と Label3 ) と 1 テキスト ボックス (Label2 の下 ) 図に示す方法で。

最後に、 コマンド ボタン をドラッグします。

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧪ ステップ 3:ListBox1 のコードを書く

ListBox1 をダブルクリックします . プライベート サブプロシージャ ListBox1_Click と呼ばれる 開くでしょう。そこに次のコードを入力してください。

Private Sub ListBox1_Click()

For i = 0 To UserForm1.ListBox1.ListCount - 1
    If UserForm1.ListBox1.Selected(i) = True Then
        Worksheets(UserForm1.ListBox1.List(i)).Activate
        Exit For
    End If
Next i

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧪ ステップ 4:TextBox1 のコードを書く

次に TextBox1 をダブルクリックします .別のプライベート サブプロシージャ TextBox1_Change と呼ばれる 開くでしょう。そこに次のコードを入力してください。

Private Sub TextBox1_Change()

On Error GoTo TB1:

ActiveSheet.Range(UserForm1.TextBox1.Text).Select

Exit Sub

TB1:
    x = 21

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧪ ステップ 6:CommandButton1 のコードを記述する

最後に、CommandButton1 をダブルクリックします . プライベート サブプロシージャ CommandButton1_Click と呼ばれる 開くでしょう。そこに次のコードを入力してください。

Private Sub CommandButton1_Click()

List_Location = UserForm1.TextBox1.Text

Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")

Range(List_Location).Validation.Delete

Unique_Data = ""

Count = 0

If UserForm1.ListBox2.Selected(0) = True Then
    For i = LBound(Data) To UBound(Data)
        Unique_Values = Split(Unique_Data, ",")
        For j = LBound(Unique_Values) To UBound(Unique_Values)
            If Data(i) = Unique_Values(j) Then
                Count = 1
                Exit For
            End If
        Next j
        If Count = 0 Then
            If Unique_Data = "" Then
                Unique_Data = Unique_Data + Data(i)
            Else
                Unique_Data = Unique_Data + "," + Data(i)
            End If
        End If
        Count = 0
    Next i

ElseIf UserForm1.ListBox2.Selected(1) = True Then
    For i = LBound(Data) To UBound(Data)
        For j = LBound(Data) To UBound(Data)
            If j <> i And Data(i) = Data(j) Then
                Count = 1
                Exit For
            End If
        Next j
        If Count = 0 Then
            If Unique_Data = "" Then
                Unique_Data = Unique_Data + Data(i)
            Else
                Unique_Data = Unique_Data + "," + Data(i)
            End If
        End If
        Count = 0
    Next i
Else
    MsgBox "Select Either At Least Once or Exactly Once.", vbExclamation
End If

Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧪ ステップ 7:UserForm を実行するためのコードを記述する

新しいモジュールを挿入 VBA ツールバーから そこに次のコードを挿入します。

Sub Run_UserForm()

UserForm1.Caption = "Keep Unique Values in Drop-Down List"

UserForm1.Label1.Caption = "Worksheet: "
UserForm1.Label2.Caption = "List Location: "
UserForm1.Label3.Caption = "Keep Unique Values that Appear: "

UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle
UserForm1.ListBox1.ListStyle = fmListStyleOption

For i = 1 To Sheets.Count
    UserForm1.ListBox1.AddItem Sheets(i).Name
Next i

For i = 0 To UserForm1.ListBox1.ListCount - 1
    If UserForm1.ListBox1.List(i) = ActiveSheet.Name Then
        UserForm1.ListBox1.Selected(i) = True
        Exit For
    End If
Next i

UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle
UserForm1.ListBox2.ListStyle = fmListStyleOption

UserForm1.ListBox2.AddItem "At Least Once"
UserForm1.ListBox2.AddItem "Exactly Once"

UserForm1.CommandButton1.Caption = "OK"

Load UserForm1
UserForm1.Show

End Sub

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

⧪ ステップ 8:UserForm の実行 (最終出力)

あなたのユーザーフォーム すぐに使用できます。 マクロを実行します Run_UserForm と呼ばれる .

ユーザーフォーム ワークシートに読み込まれます。

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

ドロップダウン リストがあるワークシートを選択します。これが Sheet3 です .

次に、ワークシート上のリストの場所のセル参照を入力します。こちらが B3 です .

最後に、少なくとも 1 回のいずれかを選択します または 1 回だけ。 ここでは [少なくとも 1 回] を選択しました .

だから私のユーザーフォーム 次のようになります:

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

[OK] をクリックします .選択した基準に従って、入力場所のドロップダウン リストから重複した値が削除されます。

Excel の VBA を使用したドロップダウン リストの一意の値 (完全ガイド)

続きを読む: Excel で数式に基づいてドロップダウン リストを作成する方法 (4 つの方法)

覚えておくべきこと

  • この記事では、ドロップダウン リストからのみ重複した値を削除することに焦点を当てました。ドロップダウン リストの作成方法や重複リストの値の並べ替え方法については、この記事をご覧ください。

結論

これらは、Excel VBA を使用してドロップダウン リストから重複した値を削除し、固有の値のみを保持する方法です。 .何か質問がありますか?お気軽にお問い合わせください。私たちのサイト ExcelDemy にアクセスすることを忘れないでください より多くの投稿と更新情報をご覧ください。

関連記事

  • Excel でセルの値をドロップダウン リストにリンクする方法 (5 つの方法)
  • Excel の条件付きドロップダウン リスト (作成、並べ替え、使用)
  • Excel で動的依存ドロップダウン リストを作成する方法
  • IF ステートメントを使用して Excel でドロップダウン リストを作成する方法
  • Excel のドロップダウン リスト付き VLOOKUP

  1. Excelで複数の単語を含む依存ドロップダウンリストを作成する方法

    Microsoft Excel で作業中 、場合によってはデータ入力フォームや Excel を作成する必要があります ダッシュボード。データ入力フォームを開発する場合、ドロップダウン リストは Excel の非常に便利な機能です。セル内の項目のリストがドロップダウン メニューとして表示され、ユーザーはそこから選択できます。一連のセルに頻繁に入力する必要があるリストがある場合、これは有益です。この記事では、複数の単語を含む Excel 依存のドロップダウン リストを作成する手順を示します。また、これらのリストをクリアまたはリセットする方法も示します。 ワークブックをダウンロードして練習できま

  2. Excel でドロップダウン リスト付きのデータ入力フォームを作成する方法 (2 つの方法)

    Microsoft Excel では、データ入力、電卓などのさまざまなフォームを作成できます。これらのタイプのフォームは、データを簡単に入力するのに役立ちます。また、多くの時間を節約できます。 Excel のもう 1 つの便利な機能は、ドロップダウン リストです。限られた値を何度も入力すると、プロセスが多忙になる可能性があります。ただし、ドロップダウン リストでは 、値を簡単に選択できます。今日、この記事では、データ入力の方法を学びます Excel のドロップダウン リストを含むフォーム 適切なイラストで効果的に。 Excel でドロップダウン リスト付きのデータ入力フォームを作成する 2 つ