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