Certo!
come avrai visto dichiaro due vettori all'inizio della macro
ogni vettore è composta da 5 valori (i cinque numeri di ogni estrazione)
CC incece sono le colonne da 3 a 7 (C, G)
VettN assume Il valore della colonna C ma essendo il primo vettore numerico 1 devi detrarre 2 alla colonna 3 (3-2=1) e (7-2=5)
RR sono le righe (iniziano da 4 fino all'ultima riga UR)
però scansiono le estrazioni partendo dall'ultima a salire (con step-1)
Stessa cosa per VettN1
che inizia dalla riga RR-1 alla riga 3 che è vuota
In caso di corrispondenza
- Codice: Seleziona tutto
Cells(RR, CC + 9).Value = CC1 - 2
Inserirà il nella colonna CC+9 quindi in caso di CC = Colonna C il valore sarà inserito nella colonna L a proseguire il numero della colonna CC1-2 quindi da 1 a 5
Altrimenti
- Codice: Seleziona tutto
Else
If Cells(RR, CC + 9).Value = "" Then Cells(RR, CC + 9).Value = CC - 2
e se la cella è vuota inserirà il numero della colonna CC-2 quindi da 1 a 5
Mentre scrivevo questo post mi sono anche accorto di un'incongruenza
ma che non cambia il risultato
Si devono scansionare le colonne di ogni riga quindi andrebbero invertiti i for...next di righe e colonne della prima parte
in questa maniera
- Codice: Seleziona tutto
Sub CopilaTab2()
UR = Range("C" & Rows.Count).End(xlUp).Row
Range("L4:P" & UR).ClearContents
Dim VettN(5) As Integer
Dim VettN1(5) As Integer
For RR = UR To 4 Step -1 '<<<<<<<
For CC = 3 To 7 '<<<<<<<
VettN(CC - 2) = Cells(RR, CC).Value
For RR1 = RR - 1 To 3 Step -1
For CC1 = 3 To 7
VettN1(CC1 - 2) = Cells(RR1, CC1).Value
If VettN(CC - 2) = VettN1(CC1 - 2) Then
Cells(RR, CC + 9).Value = CC1 - 2
GoTo saltaRR
Else
If Cells(RR, CC + 9).Value = "" Then Cells(RR, CC + 9).Value = CC - 2
End If
Next CC1
Next RR1
saltaRR:
Next CC '<<<
Next RR '<<<<
End Sub