【发布时间】:2019-04-15 12:29:46
【问题描述】:
我想根据标准提取唯一值。这是我目前所拥有的:
Sub test()
Dim x As Variant
Dim objdict As Object
Dim lngrow As Long
With Sheets("Sheet1")
Set objdict = CreateObject("Scripting.Dictionary")
x = Application.Transpose(.Range("A1", .Range("A1").End(xlDown)))
For lngrow = 1 To UBound(x, 1)
objdict(x(lngrow)) = 1
Next
.Range("C1:C" & objdict.Count) = Application.Transpose(objdict.keys)
End With
End Sub
低于我想要达到的目标:
您可以看到值在 A 列中,条件在 B 列中,唯一值在 C 列中。谁能告诉我我需要在代码中更改什么?
【问题讨论】:
-
你的代码给你带来了什么问题?
-
哪个标准?我不明白你想要达到什么目标,或者你被困在哪里。看来您可以只使用
COUNTIF或Remove Duplicates。 -
我认为你不能那样做,唯一的键是强制性的。在那种情况下,你的钥匙会变成什么?似乎可以在没有字典的情况下完成,除非您使用“此键是否存在?”字典的功能并允许它实际帮助您,您可以对其进行编码,因此如果您尝试创建一个不存在的键,则不会发生任何事情,它不会被添加到字典中,这就是您希望使用字典过滤唯一性的方式。
-
@ashleedawg 我相信 OP 想要使用键来识别唯一的值集,这里有这样做的示例,如果键已经存在,则忽略添加,或捕获错误添加并继续。使用“键”作为真正的唯一值集,当然可以链接到任意数量的其他记录。看起来像一个“唯一键”,值 1 符合他的标准。除非有一堆价值标准,否则似乎更容易做到这一点。