Excel 引用没有重复值的数据
我有下表: 我们的主要类别是水果/蔬菜,其子类别是其类型,其类型的子类别是颜色。几个小时以来,我一直试图通过公式实现以下输出,但没有成功 行中的主产品类型不应重复。如果“水果/蔬菜类型”中存在重复,我们只需使用该类型的一次及其所有颜色。对不起,如果解释不好的话。以下是图表:Excel 引用没有重复值的数据,excel,vba,Excel,Vba,我有下表: 我们的主要类别是水果/蔬菜,其子类别是其类型,其类型的子类别是颜色。几个小时以来,我一直试图通过公式实现以下输出,但没有成功 行中的主产品类型不应重复。如果“水果/蔬菜类型”中存在重复,我们只需使用该类型的一次及其所有颜色。对不起,如果解释不好的话。以下是图表: 这是一个使用字典的解决方案 Sub test() Dim vDB, vR() Dim Dic As Object 'Dictionary Dim Fruit As Object 'Dictionar
这是一个使用字典的解决方案
Sub test()
Dim vDB, vR()
Dim Dic As Object 'Dictionary
Dim Fruit As Object 'Dictionary
Dim Ws As Worksheet, toWs As Worksheet
Dim i As Long, j As Long, r As Long
Dim k As Integer
Set Ws = Sheets(1) 'set your data Sheet
Set toWs = Sheets(2) 'set your result Sheet
vDB = Ws.Range("a1").CurrentRegion
Set Dic = CreateObject("Scripting.Dictionary")
Set Fruit = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(vDB, 1)
If Dic.Exists(vDB(i, 1)) Then
Else
Dic.Add vDB(i, 1), vDB(i, 1)
End If
Next i
r = Dic.Count
ReDim vR(1 To r, 1 To 1000)
For i = 1 To r
vR(i, 1) = Dic.Items(i - 1)
k = 1
For j = 2 To UBound(vDB, 1)
If vDB(j, 1) = Dic.Items(i - 1) Then
If Fruit.Exists(vDB(j, 2)) Then
k = k + 1
vR(i, k) = vDB(j, 3)
Else
Fruit.Add vDB(j, 2), vDB(j, 2)
k = k + 2
vR(i, k - 1) = vDB(j, 2)
vR(i, k) = vDB(j, 3)
End If
End If
Next j
Next i
With toWs
.Range("a1").CurrentRegion.Clear
.Range("a1").Resize(r, 1000) = vR
End With
End Sub
到目前为止,您尝试了什么?@horst我尝试用数据透视表分离这些值,这样就不会有重复的值,但没有成功。我也试过VLOOKUP,但它也会打印出副本。为什么透视表不起作用?可以发布吗?在透视表中,我垂直获取值,但问题是,我需要将它们分为两行,如上面的“结果”图所示。当然,我可以复制它们并水平粘贴,但问题是是否可以使用公式,而不是复制粘贴选项..谢谢!为了更好地理解字典的结构,我读了一些关于字典结构的书,非常好用!