ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¦C¥X¤£¬Û¦P¼Æ­È©Î¦r¦ê¥X²{¦¸¼Æ

Sub TEST()
Dim Arr, xD, i&, j&, A$, B, T$, N&
[E2:F2000].ClearContents
Arr = Range([B6], [A65536].End(xlUp))
Set xD = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(Arr)
    A = Arr(i, 1):  B = Arr(i, 2)
    If A = "" Or Val(B) = 0 Then GoTo 101
    If xD(A) = 0 Then N = N + 1: xD(A) = N: Arr(N, 1) = A: Arr(N, 2) = 0
    B = Split(B & "-" & B, "-")
    For j = B(0) To B(1)
        T = A & "/" & j:  xD(T) = xD(T) + 1
        If xD(T) = 1 Then Arr(xD(A), 2) = Arr(xD(A), 2) + 1
    Next j
101: Next
If N > 0 Then [E2:F2].Resize(N) = Arr
End Sub

TOP

¦^´_ 3# jesscc


¤½¦¡¬O¨S¿ìªk,
ªí®æ¬O¤°»ò¼Ë???  ¤W¶Ç¬Ý¬Ý~~

TOP

¦^´_ 5# jesscc


³o¬O¹ê»Úªí®æ???
ºØÃþ©T©w¥u¦³3ºØ???

TOP

¥H¤Uµ{¦¡½X©ñ¦b¤@¯ë¼Ò²Õ:
Function GetCount(xA As Range, xB As Range, C$)
Dim Arr, Brr, xD, i&, j&, B
Set xD = CreateObject("Scripting.Dictionary")
Arr = xA: Brr = xB
For i = 1 To UBound(Arr)
    If Arr(i, 1) <> C Or Val(Brr(i, 1)) = 0 Then GoTo 101
    B = Split(Brr(i, 1) & "-" & Brr(i, 1), "-")
    For j = B(0) To B(1):  xD(j) = 1:  Next j
101: Next
GetCount = xD.Count
End Function


D3/¤½¦¡:
=IF(B3="","",GetCount(A$7:A$20,D$7:D$20,B3))


¸ê®Æ¦hªº¸Ü, À³¸Ó·|¥d
===============================

TOP

        ÀR«ä¦Û¦b : ¤@­Ó¤H¤£©È¿ù¡A´N©È¤£§ï¹L¡A§ï¹L¨Ã¤£Ãø¡C
ªð¦^¦Cªí ¤W¤@¥DÃD