gpt4 book ai didi

excel - 在 VBA 中获取列的所有唯一值的更快方法?

转载 作者:行者123 更新时间:2023-12-01 16:52:31 27 4
gpt4 key购买 nike

有没有更快的方法来做到这一点?

Set data = ws.UsedRange

Set unique = CreateObject("Scripting.Dictionary")

On Error Resume Next
For x = 1 To data.Rows.Count
unique.Add data(x, some_column_number).Value, 1
Next x
On Error GoTo 0

此时 unique.keys 得到了我所需要的,但是对于具有数万条记录的文件来说,循环本身似乎非常慢(而这根本不是问题尤其是 Python 或 C++ 等语言)。

最佳答案

使用 Excel 的 AdvancedFilter 函数来执行此操作。

对于较小的数据集,使用 Excel 内置的 C++ 是最快的方法,对于较大的数据集,使用字典更快。例如:

复制 A 列中的值并将唯一值插入 B 列中:

Range("A1:A6").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
<小时/>

它也适用于多列:

Range("A1:B4").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("D1:E1"), Unique:=True

要小心多列,因为它并不总是按预期工作。在这些情况下,我会采取删除重复项的方法,方法是选择一系列列以保证唯一性。引用:MSDN - Find and remove duplicates

enter image description here

这里我根据第三列删除重复的列:

Range("A1:C4").RemoveDuplicates Columns:=3, Header:=xlNo

这里我根据第二列和第三列删除重复的列:

Range("A1:C4").RemoveDuplicates Columns:=Array(2, 3), Header:=xlNo

关于excel - 在 VBA 中获取列的所有唯一值的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com