この記事では、excel に関する関連知識を提供します。主に、Excel が動的なあいまい一致のドロップダウン メニューを作成する方法に関する関連問題を紹介します。一緒に見てみましょう。皆様のお役に立てれば幸いです。役立つ。
関連する学習の推奨事項: excel チュートリアル
関数を使用してあいまい一致のドロップダウン メニューを作成できることはわかっていますが、 the function guy 小さくてスマートなのが特徴ですが、少しでもデータ量が大きくなると効率が瀬戸際になります。誰もが知っているように、Excel で複雑な問題を効率的に解決するには、依然として愚かで愚かな VBA に依存する必要があります。そこで、今日は、VBA を使用して、より便利な動的ファジー マッチング ドロップダウン メニューを作成する方法を共有します。
完成した効果のデモは次のとおりです。
#上の図に示すように、列 A のセルをクリックすると、Excel が自動的にポップアップします。テキスト入力ボックスとリストフレーム。テキストボックスにデータを入力すると、リストボックスのデータが動的に更新されます。
対象のワークシートを選択し、[開発ツール]→[挿入]→[ActiveX コントロール]と進み、テキストボックスとリストボックスを挿入します。コントロールのサイズや格納場所は任意ですが、何を言っても大丈夫ですので、後ほどコードが勝手に調整してくれます。
VBA コードの調整方法がわからない場合は、ここのテキスト ボックスの名前は TextBox1 にし、リストの名前は TextBox1 にする必要があることに注意してください。ボックスは ListBox1 - Normal である必要があります。つまり、これら 2 つの名前はシステムのデフォルトでもあります。
ターゲット ワークシートを選択したまま、ショートカット キー
コード分析についてはコメントを参照してください
'设置文本框和列表框的大小及位置 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
最後に VBE を閉じて、現在のブックを xlsm ファイルとして保存します。
……
VBA を理解していない場合は、上記の手順を実行した後、コード内の「サンプル」をワークシートに置き換える必要があります。ドロップダウン リストのデータ ソースが配置されている名前を指定するには、「d2:d」 & .Cells(Rows.Count, "d") の部分を実際のデータ ソースが配置されている列に置き換えます。
With Worksheets("示例") '下拉列表来源内容的所在工作表 arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源 End With
関連する学習の推奨事項: Excel チュートリアル
以上がExcel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。