Option Explicit
Sub Nodi()
Dim uRiga As Long, Gruppo(), RigaInizio As Long, ColInizio As Long
Dim Nodi As Collection, i As Long, j As Long, k As Long, Colonna As Long
Dim Codice As Collection, uRigaNodi As Long, Confronto As Long
Dim CampoA As Range, CampoB As Range, Riga As Long
Set Nodi = New Collection
Set Codice = New Collection
RigaInizio = 4
ColInizio = 6
uRiga = Range("A" & Rows.Count).End(xlUp).Row
uRigaNodi = Cells(Rows.Count, ColInizio).End(xlUp).Row
Range(Cells(RigaInizio, ColInizio), Cells(uRigaNodi, 1000)).ClearContents
Set CampoA = Range(Cells(RigaInizio, 1), Cells(uRiga, 1))
Set CampoB = Range(Cells(RigaInizio, 3), Cells(uRiga, 3))
On Error Resume Next
For i = RigaInizio + 2 To uRiga
Nodi.Add Cells(i, 3).Value, CStr(Cells(i, 3).Value)
Codice.Add Cells(i, 1).Value, CStr(Cells(i, 1).Value)
Next i
On Error GoTo 0
For i = 1 To Nodi.Count
Cells(RigaInizio + Riga, ColInizio).Value = "Tabella Nodo " & Nodi(i)
Riga = Riga + 1
For j = 1 To Codice.Count
Confronto = Application.WorksheetFunction.CountIfs(CampoA, Codice(j), CampoB, Nodi(i))
If Confronto > 0 Then
Cells(RigaInizio + Riga, ColInizio).Value = Codice(j)
Colonna = 1
For k = RigaInizio + 2 To uRiga
If Cells(k, 3).Value = Nodi(i) And Cells(k, 1).Value = Codice(j) Then
Cells(RigaInizio + Riga, ColInizio + Colonna).Value = Cells(k, 2).Value
Colonna = Colonna + 1
End If
Next k
Riga = Riga + 1
End If
Next j
Riga = Riga + 1
Next i
Set Nodi = Nothing
Set Codice = Nothing
Set CampoA = Nothing
Set CampoB = Nothing
End Sub
|