patel ha scritto:
Il controllo è fatto dalle righe
dif = Abs(sh2.Cells(r, c + 1) - sh1.Cells(c + 2, "B"))
If dif <= sh2.Cells(r, c + 1) * scarto Then
calcola la differenza dei due valori e controlla se questa è minore del 50% del valore del foglio2.
Ciao! Che tu ci creda o no sto ancora usando il tuo codice macro per alcune valutazioni! L'ultimo codice era perfetto. Non so se dopo tutto questo tempo ci sei ancora e soprattutto vuoi aiutarmi ...mi piacerebbe cambiare (se semplice e possibile) la logica dietro il tuo lavoro con:
- Anzichè: calcola la differenza dei due valori e controlla se questa è minore del 50% del valore del foglio2.
- Sarebbe meglio: controlla se il valore del foglio 2 è entro il 50% del valore inserito nel foglio 1
Esempio di compatibilità rispettata 1 (scarto 50%):
Valore foglio 1: 10
Valori possibili foglio 2: tra 5 e 15 inclusi
Esempio di compatibilità rispettata 2 (scarto 50%):
Valore foglio 1: 5
Valori possibili foglio 2: tra 2,5 e 7,5 inclusi
Codice di partenza:
Sub cerca()
Set sh1 = Sheets(1)
Set sh2 = Sheets(2)
LR = sh2.Cells(Rows.Count, "A").End(xlUp).Row ' ultima riga utile
dr = 2
ncol = 15 ' numero criteri
scarto = sh1.Range("C2")
For r = 10 To LR
n = 0
For c = 1 To ncol
If Not IsNull(Abs(sh2.Cells(r, c + 1))) Then
sh1cella = sh1.Cells(c + 2, "B") ' <<<<<<<<<<<<<<
dif = Abs(sh2.Cells(r, c + 1) - sh1cella) ' <<<<<<<<<<<<<<
If dif <= sh2.Cells(r, c + 1) * scarto Or sh1cella = "" Then ' <<<<<<<<<<<<<<
n = n + 1
End If
End If
Next
If n = ncol Then
sh2.Range("A" & r & ":A" & r).Copy Range("I" & dr)
dr = dr + 1
End If
Next
End Sub
Ciao e grazie mille di cuore ..buon Natale!