Heim >Themen >excel >Erfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen

Erfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen

WBOY
WBOYnach vorne
2022-04-24 12:08:275400Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Excel und stellt vor allem verwandte Themen zur Erstellung dynamischer Fuzzy-Matching-Dropdown-Menüs vor. Ich hoffe, dass er für alle hilfreich ist.

Erfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen

Verwandte Lernempfehlungen: Excel-Tutorial

Wir wissen, dass Sie Funktionen verwenden können, um Fuzzy-Matching-Dropdown-Menüs zu erstellen, aber die Funktion ist klein und intelligent und die Datenmenge ist etwas größer Effizienz steht direkt am Ende. Wie wir alle wissen, muss man sich in Excel immer noch auf das dumme und dumme VBA verlassen, um komplexe Probleme effizient zu lösen. Deshalb werde ich Ihnen heute zeigen, wie Sie mit VBA ein nützlicheres dynamisches Fuzzy-Matching-Dropdown-Menü erstellen können.

Der abgeschlossene Effekt wird wie folgt demonstriert:

Erfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen

Klicken Sie wie im Bild oben gezeigt auf die Zelle in Spalte A, und Excel öffnet automatisch ein Texteingabefeld und ein Listenfeld. Wenn Daten in das Textfeld eingegeben werden, werden die Daten im Listenfeld dynamisch aktualisiert.

1 丨 Produktionsschritte

Wählen Sie das Zielarbeitsblatt aus, gehen Sie zu [Entwicklungstools] → [Einfügen] → [ActiveX-Steuerelement] und fügen Sie ein Textfeld und ein Listenfeld ein. Die Größe und der Speicherort des Steuerelements sind sowieso egal, was Sie sagen. Der Code wird später von selbst Anpassungen vornehmen.

Erfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen

Es ist zu beachten, dass, wenn Sie nicht wissen, wie Sie den VBA-Code anpassen, der Name des Textfelds hier TextBox1 und der Name des Listenfelds ListBox1 sein muss – normalerweise sind dies auch diese beiden Namen die Systemvorgaben von.

Erfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen

Lassen Sie das Zielarbeitsblatt ausgewählt, drücken Sie die Tastenkombination , um den VBE-Editor zu öffnen, und fügen Sie den folgenden Code in das Codefenster des aktuellen Arbeitsblatts ein.

Siehe Kommentare zur Code-Analyse

'设置文本框和列表框的大小及位置
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim b As Boolean, arr
    If Target.Column <> 1 Or Target.Row < 2 Then b = True &#39;如果用户选择的单元格不是第1列或者属于第1行
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then b = True &#39;如果用户选择的单元格数量大于1
    If b Then
        ListBox1.Visible = False &#39;不可见
        TextBox1.Visible = False &#39;不可见
        Exit Sub &#39;退出程序
    End If
    With Worksheets("示例") &#39;下拉列表来源内容的所在工作表
        arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) &#39;数据源
    End With
    With TextBox1
        .Value = ""
        .Visible = True &#39;可见
        .Top = Target.Top &#39;文本框顶部位置
        .Left = Target.Left &#39;文本框左侧位置
        .Height = Target.Height &#39;文本框高度
        .Width = Target.Width &#39;文本框宽度
        .Activate &#39;激活文本框
    End With
    With ListBox1
        .Visible = True &#39;可
        .Top = Target.Offset(0, 1).Top
        .Left = Target.Offset(0, 1).Left
        .Height = Target.Height * 5
        .Width = Target.Width
        .List = arr &#39;写入数据源数据
    End With
End Sub
&#39;根据文本框的输入值动态匹配数据
Private Sub TextBox1_Change()
    Dim arr, brr, i&, k&
    With Worksheets("示例") &#39;下拉列表来源内容的所在工作表
        arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) &#39;数据源
    End With
    If TextBox1.Text = "" Then ListBox1.List = arr: Exit Sub
    ReDim brr(1 To UBound(arr))
    For i = 1 To UBound(arr)
        If InStr(1, arr(i, 1), TextBox1.Text, vbTextCompare) Then  &#39;忽略字母大小写
            k = k + 1
            brr(k) = arr(i, 1)
        End If
    Next
    ListBox1.List = brr &#39;写入匹配后的数据
End Sub
&#39;如果双击列表框的内容则写入活动单元格
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell = ListBox1.Text
    With ListBox1
        .Clear &#39;清空列表框
        .Visible = False
    End With
    With TextBox1
        .Value = ""
        .Visible = False
    End With
End Sub

Schließen Sie schließlich VBE und speichern Sie die aktuelle Arbeitsmappe als XLSM-Datei.
...

2 丨Andere

Wenn Sie VBA nicht verstehen, müssen Sie nach dem Ausführen der obigen Schritte „Beispiel“ im Code durch den Namen des Arbeitsblatts ersetzen, in dem sich die Datenquelle der Dropdown-Liste befindet gefunden, und ersetzen Sie den Teil „d2:d“ & . Cells(Rows.Count, „d“) durch die Spalte, in der sich die tatsächliche Datenquelle befindet.

With Worksheets("示例") &#39;下拉列表来源内容的所在工作表
arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) &#39;数据源
End With

Verwandte Lernempfehlungen: Excel-Tutorial

Das obige ist der detaillierte Inhalt vonErfahren Sie Schritt für Schritt, wie Sie in Excel ein dynamisches Fuzzy-Matching-Dropdown-Menü erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:excelhome.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen