我正在尝试创建一个搜索,因为我输入Excel文件,其中我有一个产品列表(在一个工作表上)和另一个上的形式发票。 Proforma在单元格中包含数据验证下拉列表,以从下拉菜单中选择产品。由于我的列表包含超过6000个项目,因此很难搜索所有项目以手动找到正确的项目。
我尝试了以下内容:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lType As Long
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next
lType = Target.Validation.Type
On Error GoTo 0
If lType = 3 Then
With Sheets("Lists")
.Range("CritProd").Cells(2, 1).Value = _
"*" & Target.Offset(0, -1).Value & "*"
.Range("ProdList").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Range("CritProd"), _
CopyToRange:=.Range("extProd"), _
Unique:=False
End With
End If
End Sub
其中CritProd
是=Lists!B:B
,其中包含我的所有产品名称,ProdList
为=OFFSET(Lists!$I$1,0,0,COUNTA(Lists!$I:$I),1)
,extProd
为= Lists!$ I $ 1.
我还发现了一个YouTube视频,解释了如何在没有VBA的情况下进行操作,但它仅适用于一个单元格,在我的情况下,可能只有一个单元格。
答案 0 :(得分:2)
我还在发票模板上创建了一个动态可搜索数据验证列表,以便将数据从产品页面带到主页。可以搜索我们用公式和一个小的 VBA 代码创建的数据验证列表。
单元格 A19 的公式:=OFFSET(Product!$A$2,MATCH($A19&"*",Products_1,0)-1,,COUNTIF(Products_1,$A19&"*"),)