【发布时间】:2021-07-24 15:34:20
【问题描述】:
您好,我有组合框,可以很好地使用以下代码进行过滤:
Dim rCell As Range
Set ws = Worksheets("Sheet1")
With CreateObject("Scripting.Dictionary")
For Each rCell In ws.Range("N3", ws.Cells(Rows.Count, "N").End(xlUp))
If Not .Exists(rCell.Value) And Not rCell.Value = "" Then
.Add rCell.Value, Nothing
End If
Next rCell
ComboBox4.List = .keys
End With
一切都按预期工作。我现在要做的就是将 K 列添加到我的组合框中的第二列。此列更多,因此用户知道描述。 N 列是项目编号的唯一列表,我的要求只是在组合框的第二列中显示该项目编号的相关描述。这可能吗?
谢谢
【问题讨论】:
-
请让我了解您的真正需求:您想从 K:K 收集 第一次出现的 N:N(同一行)的对应值乙>?这种理解应该正确吗?您的独特价值观是否在所有出现时都有相同的描述?
-
每一行都有一个项目 ID 和相应的描述。我刚刚错过了 C 列值为 1 的基本信息,然后取该项目编号和描述。
-
因此,只有在 C:C 列中存在 1 个值时,才应使用 K:K 中的值。不是唯一键的第一次出现。这种理解正确吗?如果是,这需要一种不同的方法。我可以做到,但是我可以看到您不理解我的代码,并且更喜欢逐项加载组合的变体...
-
感谢您的支持,老实说我不是程序员。我是一名 PLM 顾问,需要从导出到 excel 的数据中提供解决方案,并使用 VBA 后处理提取的数据。如果您查看我整理的所有代码,您会笑得从座位上掉下来……这令人震惊,但它确实有效,更重要的是,我正在学习 VBA 并真正享受它。我对一些指针和诚实地自己编写代码感到满意,但我感谢您的支持。寻找的是扫描行 C 直到最后,如果你击中一个等于 1 的单元格值,那么显示的值
-
然后,试试我发布的代码。它应该做你需要的(我理解)......
标签: excel vba loops dictionary filter