繁体   English   中英

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

[英]How do I get a list of unique values from a column in Excel VBA?

我浏览了许多不同的文章,这些文章过滤了唯一的值。 但是,几乎所有它们都会复制到一个新位置/手动遍历整个列,这是我想避免的。

我的要求是根据G2列的单元格的值(例如,单独文件中的“所有房屋”,“所有公寓”,“所有公寓”等),在单独的工作簿中将行与单个列分开)。 我试图在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

之所以得到这些值,是因为您指定了CopyToRange ,因此您知道这些值在哪里。 因此,无论您刚刚用作参考,现在都可以对其进行操作。

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

一种替代方法是使用With语句:

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

<content here>

End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM