我查看了论坛,我无法找到问题的正确答案。我有一个如下所示的列表:
ID ID2
SS_ID 1 T1
SS_ID 1 T2
SS_ID 1 T2
SS_ID 1 T3
SS_ID 4 T1
SS_ID 4 T5
第一列有ID。问题是,在第二列中,我还有与第一列相关的ID号。
因此列表在Excel中的表格中,我试图在VBA的帮助下找到第2列中与第1列相关的用户数。如果有任何机会有没有VBA的解决方案,请随时帮助我。但据我所知,我只看到了VBA中的解决方案。
仅供参考我从宏中生成列表。我还找到了一种方法来删除重复项而不删除必须在我的情况下的行。
总结一下,我需要" unique"第2列中与第1列相关的值。它就像一个countif函数,但有点复杂。
结果应如下所示:
SS_ID 1 = 3
SS_ID 4 = 2
我对VBA完全不熟悉。
答案 0 :(得分:3)
除非您绝对需要,否则无需vba。
=SUMPRODUCT((A$2:INDEX(A:A, MATCH("Z", A:A))=D2)/(COUNTIFS(B$2:INDEX(B:B, MATCH("ZZZ", A:A)), B$2:INDEX(B:B, MATCH("ZZZ", A:A)), A$2:INDEX(A:A, MATCH("Z", A:A)), D2)+(A$2:INDEX(A:A, MATCH("Z", A:A))<>D2)))
答案 1 :(得分:0)
你可以使用类似的东西: = SUMIFS(C1:C6; A1:A6;“= SS_ID 4”)
附图中的excel功能“SOMMA.PIU.SE”是英文的“SUMIFS”。 SUMIFS函数添加满足多个条件的所有参数(A1:A6)(A1:A6 =&gt;“= SS_ID 4”)。
答案 2 :(得分:0)
这是一个基于宏的解决方案:
Sub UniqueTable()
Dim i As Long, N As Long, c As Collection, M As Long
Dim j As Long, vd As String, va As String
Columns("A:A").Copy Range("D1")
ActiveSheet.Range("D:D").RemoveDuplicates Columns:=1, Header:=xlYes
Range("E1").Value = "# of unique values"
N = Cells(Rows.Count, "D").End(xlUp).Row
M = Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To N
Set c = Nothing
Set c = New Collection
vd = Cells(i, "D").Value
For j = 2 To M
va = Cells(j, "A").Value
If va = vd Then
On Error Resume Next
c.Add Cells(j, "B").Value, CStr(Cells(j, "B").Value)
On Error GoTo 0
End If
Next j
Cells(i, "E").Value = c.Count
Next i
End Sub
您可以轻松修改代码,将小结果表放在您喜欢的任何位置。如果你在cols A 和 B 中添加/删除/修改项目,只需重新运行代码即可。