如何从Excel VBA中的列中获取唯一值列表?

时间:2013-12-23 01:59:04

标签: excel vba excel-vba filter unique-values

我已经阅读了许多不同的文章来过滤独特的价值观;但是,几乎所有这些都手动复制到整个列的新位置/循环,我希望避免这样做。

我的要求是根据G2列的单元格的值(例如,All Houses,All Condos,All Apartments等在单独的文件中)将行与单独的工作簿中的单个列分开。 我试图在Excel VBA中使用AdvancedFilter将每个唯一值提取到一个数组中,然后遍历这些唯一值来查找所有相应的列值。我不知道AdvancedFilter是如何工作的。

xlFilterCopy和copyToRange将唯一值列表复制到指定范围。

xlFilterValues在世界上是如何运作的?该参考文献称xlFilterValues“过滤数据到位”。但是我如何获得这些价值呢?它会返回某种对象吗?在调试中它似乎只给我一个布尔值!

为什么这个奇怪的记录!谢谢你的帮助。

PS:如果你有更好的方法在没有advancedfilter的情况下做我需要的事情,请告诉我。

With sheet
.Range(orgLevelLetter & "2", .Cells(.Rows.Count, orgLevelLetter).End(xlUp)).AdvancedFilter xlFilterInPlace, , , True
End With

1 个答案:

答案 0 :(得分:1)

您获取值是因为您指定了CopyToRange,因此您知道值的去向。所以无论你刚刚用它作为参考,你现在都可以用来操纵它。

如果您不想使用CopyToRange,则调用将返回值,因为AdvancedFilter返回范围对象。因此,您可能希望将.Range语句分配给已初始化的范围。

另一种方法是以这种方式使用With语句:

With sheet.Range(orgLevelLetter & "2", _
     .Cells(.Rows.Count,orgLevelLetter).End(xlUp)).AdvancedFilter(xlFilterInPlace, , , True)

<content here>

End With