Ciao, prova questa routine: se hai qualche
difficoltà avvisami. Public Sub CercaConEst() Dim ValFog1 As
Variant, ValFog2 As Variant, numCelleH As Long, numCelleF As Long
Dim i As Long, j As Long, Dest As Range
'abbiamo
definito le variabili nel modo più generico; adesso diamo loro un
riferimento 'dovrebbe funzionare con qualsiasi valore tu abbia
in A1 (foglio1); ValFog2 = 2 ' sono stato alle
indicazioni;cambia il valore in questa riga di comando se ti occorre
ValFog1 = ThisWorkbook.Worksheets.Item(1).Cells(1, 1).Value '
valore da testare !!! opp. 1 ?
ThisWorkbook.Worksheets.Item(3).Activate Set Dest =
Range("A1") Dest.ClearContents 'osserva che non sempre c'e'
corrispondenza tra foglio e item : se inserisci dei nuovi fogli
'vengono ridefiniti gli indici della collezione Worksheets.Per
controllare : apri la finestra 'Immediata e digita
?ThisWorkbook.Worksheets.Item(1).Cells(1, 1).Value ,
controlla che 'il valore restituito corrisponda al valore che
esiste nel tuo foglio1 in A1.
ThisWorkbook.Worksheets.Item(2).Activate Range("F1").Select
numCelleF = Range(ActiveCell, ActiveCell.End(xlDown)).Count
numCelleH = Range(ActiveCell, ActiveCell.Offset(0,
2).End(xlDown)).Count 'abbiamo contato le celle nelle colonne F
e H foglio 2 supponendo che tu abbia più di un valore With
ActiveCell 'se in colonna H c'è un 2 mettiamolo nel foglio 3
For j = 0 To numCelleH - 1 If .Offset(j, 2) = ValFog2 Then
Dest.Value = ValFog2 Next j End With i = 0 j = 0
With ActiveCell ' se viene verificata la condizione per cui
abbiamo 1 sia in A1(foglio1) sia in F&H ( foglio2) '
assegniamo il valore in A1 ( foglio3) altrimenti rimane il valore 2
oppure niente For i = 0 To numCelleF - 1 For j = 0 To
numCelleH - 1 If .Offset(i, 0) = ValFog1 And .Offset(j, 2) =
ValFog1 Then ThisWorkbook.Worksheets.Item(3).Cells(1, 1) =
.Offset(j, 2) End If Next j Next i End With
End Sub |