excel - 通过 VBA 在 Excel 中寻找有关数据过滤选项的建议
问题描述
我有一个项目,我想根据用户对 8 个不同标准的选择来过滤大量数据。就我而言,它是厨柜,但更普遍的例子是汽车。向用户呈现一个包含 8 个列表框的用户表单,其中一个用于制造、型号、包装、颜色、传输等。双击列表框项目会删除该列表框中的所有其他选项,并从所有其他列表框中过滤掉无效选项。选项组合在一起,因此用户可以选择“绿色”作为颜色,“福特”作为制造。
我已经以两种不同的方式完成了这件事,但我都不满意。
1)我创建了一个矩阵,其中我在左侧列出了模型,其他 7 个特征中的每一个在顶部都有“X”在交叉点。然后我教 VBA 如何基本上像人类一样使用大量嵌套循环来阅读它。这非常慢,每次选择都会导致程序在整理所有内容时暂停 1-2 分钟。
2)我列出了每一个可能的组合(大约 22,000 个)并使用 Excel 的内置过滤选项来过滤数据,然后将结果的每一列复制到第二张纸上,过滤掉重复项并重新排序,然后使用它来重新填充列表框。这非常有效,但由于某种原因我无法理解,当我过滤某些列时,Excel 会挂断 3-10 分钟。我对其进行了调试/跟踪,并且在我的所有代码运行之后但在将控制权返回给用户之前发生了挂断。
在这一点上,我愿意接受任何建议。最终我需要用户选择一个完整的(所有 8 个选项缩小为一个选项)配置。棘手的部分是用户可以从颜色“绿色”开始,这将消除“颜色”选择列表中的所有其他颜色,以及任何品牌、型号或包装等,它们各自不是绿色的列表。也许数据可以帮助解释它?
Make Model Package Color Transmission
Ford Focus LT Blue Manual
Ford Focus LT Green Manual
...
Ford Focus ST Blue Manual
...
Ford Focus LT Blue Automatic
...
And so on for 22,000 rows.
因此,如果用户选择“手动”,我需要删除“自动”行。如果用户然后选择“ST”,我需要删除“LT”行(同时假设自动行仍然被过滤掉,依此类推,直到只剩下一行。
解决方案
只是想到了一个想法:您是否熟悉在名为 Trie 的单词词典中搜索单词的高效方法?如果您正确编码每个选项,您可以在 Trie 中输入整个选项映射。当用户做出选择时,您将遵循 Trie 中的路径。如果不存在匹配的选项,则 Trie 返回 Null,您可以通知用户。对单词的实用 Trie 实现的很好解释: https ://www.geeksforgeeks.org/trie-insert-and-search/
推荐阅读
- java - 编写一个程序,搜索一个数组以找到第一个奇数
- html - How to print to HTML Template
- c - Kotlin-Multiplatform 中的 CPointer
- linux - 有没有办法使用 mtree 规范创建/复制目录结构?
- google-sheets - 如果单元格不为空,则自动为行添加边框
- python - gensim 短语不遵守 min_count 参数
- angular - 如何使用密钥或连接字符串在 Angular 中下载 Azure blob
- node.js - 如何在 mongodb 的 node.js 实现中执行不区分大小写的查询?
- java - 如何将一段充满双引号的文本分配给Java中的String变量
- javafx - 如何允许用户单击“通过”javafx 阶段以获得“覆盖”样式应用程序?