che riepilogo brevemente:
Ho due colonne la prima contiene dei codici la seconda dei numeri. Nella prima colonna ogni codice può essere
ripetuto ma, se ripetuto,nella seconda colonna corrispondono numeri diversi;viceversa nella seconda colonna ci possono essere
numeri uguali ma a numeri uguali corrispondono codici diversi.
la questione è stata risolta da CANAPONE (con formula) e ottimizzata da Anthony con la sottonotata macro
- Codice: Seleziona tutto
Sub pappr()
Dim VArr1, I As Long, LastA As Long, Dest As String, V As Long, H As Long, rDim As Long
Dim RArr(), cPos As Variant, cRig As Long, myComm As Long
'
Dest = "K2" '<<< L' area ove sara' creata la tabella esiti
'
LastA = Cells(Rows.Count, 1).End(xlUp).Row
VArr1 = Range("A2:B" & LastA).Value
'
Range(Dest).Resize(100, 100).ClearContents ' AZZERA Area di creazione risultati
Range("A1:A" & LastA).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
Dest), Unique:=True
rDim = Range(Dest, Range(Dest).End(xlDown)).Count - 1
Range(Dest).Offset(1, 0).Resize(rDim, 1).Copy
Range(Dest).Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
r3d1 = Application.WorksheetFunction.Min(Range("B2:B" & LastA).Value)
r3d2 = Application.WorksheetFunction.Max(Range("B2:B" & LastA).Value)
ReDim RArr(1 To rDim, r3d1 To r3d2)
'riposiziona:
For I = LBound(VArr1, 1) To UBound(VArr1, 1)
cPos = Application.Match(VArr1(I, 1), Range(Dest).Offset(0, 1).Resize(1, rDim), 0)
RArr(cPos, VArr1(I, 2)) = 1
Next I
'Calcola:
For V = 1 To rDim - 1
For H = V + 1 To rDim
myComm = 0
For I = LBound(RArr, 2) To UBound(RArr, 2)
If RArr(V, I) <> "" Then
If RArr(H, I) = RArr(V, I) Then
myComm = myComm + 1
End If
End If
Next I
Range(Dest).Offset(V, H).Value = myComm
Next H
Next V
End Sub
La macro assume che il codice sia in colonna A e il numero in colonna B; verra' creata una tabella all' indirizzo specificato (K2, nel mio codice),
con in verticale e in orizzontale i vari Codici, e all' incrocio il "numero di numeri" in comune.
Attenzione: non sapendo quanto sara' grande la tabella di destinazione la macro AZZERA un' area di 100 righe * 100 Colonne a partire dall' indirizzo
specificato (K2 nel mio codice); tienilo in conto quando decidi dove creare la tabella degli esiti.
ORA VORREI SAPERE SE POSSIBILE CAMBIARE LA MACRO (MANTENENDO LO STESSO OUTPUT in verticale e in orizzontale i vari Codici, e all' incrocio UNA "X" CHE STA A SIGHIFICARE UNA CORRELAZIONE ESATTA CIOè CHE UN CODICE ABBIA GLI STESSI ESITI DI UN ALTRO CODICE)