【发布时间】:2018-12-03 04:05:25
【问题描述】:
我的数据存在于 2 个不同列的两个单元格中。
例如:
ColA:A1 单元格具有逗号分隔值 1,2,3
ColB:B1 单元格有逗号分隔值 ABC、DEF、ABC
想要实现逻辑,使其显示为,
ColA ColB
1,3 ABC
2 DEF
Ex2.:
ColA:A1 单元格具有逗号分隔值 1,2,3
ColB: B1 单元格有逗号分隔值 ABC,ABC,ABC
ColA ColB
1,2,3 ABC
到目前为止,我已经为 B 列实现了逻辑,但是,在执行此操作时无法更新 A 列数据。
Sub RemoveDupData()
Dim sString As String
Dim MyAr As Variant
Dim Col As New Collection
Dim itm
sString = "ABC,DEF,ABC,CDR"
MyAr = Split(sString, ",")
For i = LBound(MyAr) To UBound(MyAr)
On Error Resume Next
'-- A collection cannot have the same key twice so here, we are creating a key using the item that we are adding.
'-- This will ensure that we will not get duplicates.
Col.Add Trim(MyAr(i)), CStr(Trim(MyAr(i)))
On Error GoTo 0
Next i
sString = ""
For Each itm In Col
sString = sString & "," & itm
Next
sString = Mid(sString, 2)
End Sub
【问题讨论】:
-
如果您展示了您迄今为止尝试过的内容,将会更容易理解您的逻辑规则。不太可能有人会从头到尾编写您的整个项目,尤其是在您没有很好地解释自己的情况下。展示您尝试过的方法,也许我们可以拼凑出您出错的地方。
-
到目前为止,我已经为 B 列实现了逻辑。但是,在执行此操作时无法更新 A 列数据。请参考以下逻辑。
-
colA 和 ColB 是否总是具有相同数量的值? ColA 中是否会有重复项?如果是这样,你想如何处理?
-
是的。 ColA 和 ColB 始终具有相同数量的逗号分隔值。此外,ColA 将始终具有唯一的逗号分隔值。
-
Sub RemoveDupData() Dim sString As String Dim MyAr As Variant Dim Col 作为新集合 Dim itm sString = "ABC,DEF,ABC,CDR" MyAr = Split(sString, ",") For i = LBound(MyAr) To UBound(MyAr) On Error Resume Next '-- 一个集合不能有两次相同的键,所以在这里,我们使用我们添加的项目创建一个键。 '-- 这将确保我们不会得到重复。 Col.Add Trim(MyAr(i)), CStr(Trim(MyAr(i))) On Error GoTo 0 Next i sString = "" For Each itm In Col sString = sString & "," & itm Next sString = Mid( sString, 2) 结束子
标签: vba excel duplicates