이 글은 excel에 대한 관련 지식을 제공하며, Excel에서 동적 퍼지 일치 드롭다운 메뉴를 만드는 방법에 대한 관련 문제를 주로 소개합니다. 모두에게 도움이 되기를 바랍니다.
관련 학습 권장 사항: excel 튜토리얼
함수를 사용하여 퍼지 매칭 드롭다운 메뉴를 만들 수 있다는 것을 알고 있지만 기능이 작고 스마트하며 데이터의 양이 약간 더 많고 효율성은 라인의 끝 부분에 있습니다. 우리 모두 알고 있듯이 Excel에서 복잡한 문제를 효율적으로 해결하려면 여전히 멍청하고 멍청한 VBA에 의존해야 합니다. 그래서 오늘은 VBA를 사용하여 더욱 유용한 동적 퍼지 매칭 드롭다운 메뉴를 만드는 방법을 알려드리겠습니다.
완성된 효과는 다음과 같습니다.
위 그림과 같이 A열의 셀을 클릭하면 엑셀이 자동으로 텍스트 입력 상자와 목록 상자가 나타납니다. 텍스트 상자에 데이터를 입력하면 목록 상자의 데이터가 동적으로 업데이트됩니다.
대상 워크시트를 선택하고 [개발 도구] → [삽입] → [ActiveX 컨트롤]로 이동하여 텍스트 상자와 목록 상자를 삽입합니다. 컨트롤의 크기와 저장 위치는 임의적입니다. 어쨌든 코드는 나중에 자체적으로 조정됩니다.
VBA 코드 조정 방법을 모르는 경우 여기의 텍스트 상자 이름은 TextBox1이어야 하고 목록 상자 이름은 ListBox1이어야 합니다. 일반적으로 이 두 이름도 시스템 기본값.
대상 워크시트를 선택한 상태에서 단축키
코드 분석에 대한 설명 보기
'设置文本框和列表框的大小及位置 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를 이해하지 못하는 경우 위 단계를 수행한 후 코드의 "example"을 드롭다운 목록 데이터 소스가 있는 워크시트의 이름으로 바꿔야 합니다. 찾아서 "d2:d" & Cells(Rows.Count, “d”) 부분을 실제 데이터 소스가 있는 열로 교체합니다.
With Worksheets("示例") '下拉列表来源内容的所在工作表 arr = .Range("d2:d" & .Cells(Rows.Count, "d").End(3).Row) '数据源 End With
관련 학습 권장 사항: excel 튜토리얼
위 내용은 Excel에서 동적 퍼지 일치 드롭다운 메뉴를 만드는 방법을 단계별로 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!