A,B,C为数据源,D列为要计算的结果,D是这么来的: Sub A()
Dim Arr() As Variant '数据源 Dim ArrJG() As Variant '结果 Dim DicA As Object 'B列&C列作关键字,分类统计重复次数 Dim DicB As Object 'B列&C列作关键字,分类累计字符串 Dim i As Long Dim Str As String '临时字符串 Arr = Range("A1:C" & Range("A1").End(xlDown).Row).Value ReDim ArrJG(1 To UBound(Arr), 1 To 1) Set DicA = CreateObject("scripting.dictionary") Set DicB = CreateObject("scripting.dictionary") For i = 1 To UBound(Arr) Str = Arr(i, 2) & "|" & Arr(i, 3) DicA(Str) = DicA(Str) + 1 DicB(Str) = DicB(Str) & Arr(i, 1) Next i For i = 1 To UBound(Arr) Str = Arr(i, 2) & "|" & Arr(i, 3) If DicA(Str) = 2 And InStr(DicB(Arr(i, 3)), "@iptv") Then ArrJG(i, 1) = 1 Else ArrJG(i, 1) = DicA(Str) End If Next i Range("D1").Resize(UBound(ArrJG), 1) = ArrJG Set DicA = Nothing Set DicB = Nothing End Sub 修改或增加a(),或产生辅助列,有利于解答1楼问题吗? |