ホームページ > トピック > excel > Excel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。

Excel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。

WBOY
リリース: 2022-04-24 12:08:27
転載
5402 人が閲覧しました

この記事では、excel に関する関連知識を提供します。主に、Excel が動的なあいまい一致のドロップダウン メニューを作成する方法に関する関連問題を紹介します。一緒に見てみましょう。皆様のお役に立てれば幸いです。役立つ。

Excel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。

関連する学習の推奨事項: excel チュートリアル

関数を使用してあいまい一致のドロップダウン メニューを作成できることはわかっていますが、 the function guy 小さくてスマートなのが特徴ですが、少しでもデータ量が大きくなると効率が瀬戸際になります。誰もが知っているように、Excel で複雑な問題を効率的に解決するには、依然として愚かで愚かな VBA に依存する必要があります。そこで、今日は、VBA を使用して、より便利な動的ファジー マッチング ドロップダウン メニューを作成する方法を共有します。

完成した効果のデモは次のとおりです。

Excel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。

#上の図に示すように、列 A のセルをクリックすると、Excel が自動的にポップアップします。テキスト入力ボックスとリストフレーム。テキストボックスにデータを入力すると、リストボックスのデータが動的に更新されます。

1丨制作手順

対象のワークシートを選択し、[開発ツール]→[挿入]→[ActiveX コントロール]と進み、テキストボックスとリストボックスを挿入します。コントロールのサイズや格納場所は任意ですが、何を言っても大丈夫ですので、後ほどコードが勝手に調整してくれます。

Excel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。

VBA コードの調整方法がわからない場合は、ここのテキスト ボックスの名前は TextBox1 にし、リストの名前は TextBox1 にする必要があることに注意してください。ボックスは ListBox1 - Normal である必要があります。つまり、これら 2 つの名前はシステムのデフォルトでもあります。

Excel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。

ターゲット ワークシートを選択したまま、ショートカット キー を押して VBE エディタを開き、現在のワークシートのコード ウィンドウに次のコードを貼り付けます。

コード分析についてはコメントを参照してください

'设置文本框和列表框的大小及位置
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
ログイン後にコピー

最後に VBE を閉じて、現在のブックを xlsm ファイルとして保存します。
……

2丨その他

VBA を理解していない場合は、上記の手順を実行した後、コード内の「サンプル」をワークシートに置き換える必要があります。ドロップダウン リストのデータ ソースが配置されている名前を指定するには、「d2:d」 & .Cells(Rows.Count, "d") の部分を実際のデータ ソースが配置されている列に置き換えます。

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

関連する学習の推奨事項: Excel チュートリアル

以上がExcel で動的あいまい一致ドロップダウン メニューを作成する方法を段階的に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:excelhome.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート