如何在Excel中使用VBA获得3列的所有不同的独特组合?

我有一个Excel工作表,有几列,其中3个形成一个“唯一的关键”。
如果我在A列(Apple,Banana,Orange)中有水果,在列B(John,Peter)中有一些名字,而在C列中是Yes / No,我希望能够从行中的值在这些列是相同的。 例如,列D中列A,B和C是苹果,约翰,是的行的所有值的总和。

对不起,混淆的文字,但我不知道如何更清楚地expression我的问题。 我从来没有在VBA做任何事情,所以我有点在这里输了…

以下是预期结果的一个例子。 预期结果

我不知道哪种组合存在。 目标是列出所有的独特组合和其他一些列的总和。 我可以做到这一点,而不使用VBA?

没有公式/ VBA要求。 使用数据透视表来获取所有组合的摘要。 看截图

在这里输入图像说明

如果你还想要VBA,那么也可以做:)

编辑

我很快写了这个

 Sub sample() Dim ws As Worksheet Dim lRow As Long, i As Long, j As Long Dim col As New Collection Dim Itm Dim cField As String Const deLim As String = "#" Set ws = ThisWorkbook.Sheets("Sheet1") With ws lRow = .Range("A" & .Rows.Count).End(xlUp).Row For i = 2 To lRow cField = .Range("A" & i).Value & deLim & _ .Range("B" & i).Value & deLim & _ .Range("C" & i).Value On Error Resume Next col.Add cField, CStr(cField) On Error GoTo 0 Next i i = 2 .Range("A1:C1").Copy .Range("F1") .Range("I1").Value = "Count" For Each Itm In col .Range("F" & i).Value = Split(Itm, deLim)(0) .Range("G" & i).Value = Split(Itm, deLim)(1) .Range("H" & i).Value = Split(Itm, deLim)(2) For j = 2 To lRow cField = .Range("A" & j).Value & deLim & _ .Range("B" & j).Value & deLim & _ .Range("C" & j).Value If Itm = cField Then nCount = nCount + 1 Next .Range("I" & i).Value = nCount i = i + 1 nCount = 0 Next Itm End With End Sub 

在这里输入图像说明

也可以转到数据选项卡 – >删除重复项。 然后,您可以select要删除dulicates中要比较的列。