如何解决过滤后,VBA 在列表框中显示唯一项目
我正在尝试找出在列表框中显示过滤范围而不重复特定列中的单元格的最佳方法。例如:
我有一个采购订单,其中可以有很多商品。我的用户有一个字段,他可以在其中搜索商品代码,而在我的列表框中,我只想显示一次采购订单编号。
我的数据库
当我们搜索像“AA”这样的项目代码时,我的列表框显示采购订单 1 出现了两次,因为在这个条件中有两行输入。我希望能够为我过滤的任何列显示唯一的 PO。列 ITEM CODE 将被隐藏
过滤
我应该使用哪种方法的任何建议? 我的完整表格有 70 列。
我正在使用高级过滤器进行过滤:
Private Sub FilterOrders()
Dim nRows As Long
Dim FilterRange As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Clear Listbox
Me.lbviewpo.RowSource = ""
'Clear all cells
shFilter.Cells.Clear
'Populate first row with the table headers
shOrders.ListObjects("TableOrders").HeaderRowRange.Copy shFilter.Range("A1")
If Me.TextItemCode.Value <> "" Then
shFilter.Range("C2").Value = "*" & Me.TextItemCode.Value & "*"
Else
shFilter.Range("C2").Clear
End If
'Copy and paste filtered cells and Paste copied cells in TableItemFilter
Set FilterRange = shOrders.Range("A1").CurrentRegion
FilterRange.AdvancedFilter Action:=xlFilterCopy,CriteriaRange:=shFilter.Range("A1:D2"),copytorange:=shFilter.Range("A4"),Unique:=True
'Count number of items filtered (including header)
nRows = shFilter.Range("A4").CurrentRegion.Rows.Count
'Load list of items in listbox if has data
If Not shFilter.Range("A5").Value = "" Then
With Me.lbviewpo
.ColumnCount = 4
.ColumnHeads = True
.ColumnWidths = "40,50,60"
.RowSource = "=Filter!A5:D" & nRows + 3
End With
End If
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。