如何在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中要比较的列。