在vba中两次过滤和查找唯一值的最佳方法?

时间:2017-06-27 12:19:56

标签: excel vba excel-vba

我希望找到一种方法来查找第1列的唯一值,并找到第2列中与第1列中每个项目对应的唯一项目,这样我就可以将“更高级别”的内容映射到“更低级别”东西。

例如,excel表格看起来像这样

Column 1         Column 2          Column 3 
New York         Brooklyn          ....more information about col 2 
New York         Manhattan 
New York         Staten Island 
New York         Queens 
New York         Bronx 
New Jersey       Newark 
New Jersey       Jersey City 
New Jersey       Edison 
CT               Hartford 
CT               Windsor 

当选择纽约时,我必须收集布鲁克林,曼哈顿,史坦顿岛,皇后区和布朗克斯。 (我正在制作一个列表框,以便在选择纽约时,上面的行政区显示在第二个列表框中,但是当用户指定州是纽约时,我无法弄清楚如何获取行政区信息。我需要一种方法擅长搜索excel表,直到它找到纽约,然后用纽约查看列旁边的单元格)

这样做的最佳方式是什么?我将如何实际做到这一点?字典,集合,for循环,autofilter?

1 个答案:

答案 0 :(得分:0)

根据我的经验,如果您有大量数据,使用字典可能会更快。但是在字典中你必须为每条记录都有唯一的ID +你必须以某种方式处理数据。

但你也可以使用For Each循环。 我假设你会经历所有细胞,例如G。在A栏中。您正在寻找特定记录,例如: G。 "纽约"如果你找到它,那么你将行号保存到长变量" start"然后继续循环,直到单元格值<> "纽约"。如果达到这一点,"结束行"应该是循环步骤 - 1.然后你可以继续下一个循环,它将元素添加到列B(或下一列)的列表框中。

我在"商业"中看到的溶剂。电子表格是用户表单中的文本框(输入)和列表框。当您在输入(文本框)中键入内容时,然后在每个字母宏触发后,它会在隐藏(vba隐藏)选项卡中生成自动过滤器。然后在xlCellTypeVisible设置的范围内为此选项卡中的每个循环执行a并将数据添加到列表框。

总而言之,这取决于数据的数量,你必须尝试自己最适合你的解决方案。