Cerca Confronta Estrai

Storico discussioni

Cerca-Confronta-Estrai di emilio
Ho questo problema a cui non riesco a trovare un adeguata soluzione.
Ho TRE Fogli di lavoro
il nr.2 è un archivio che contiene dati nelle colonne da A alla H
il nr.1 è il foglio di lavoro principale
ul nr.3 è il foglio di lavoro che riceve i dati dal foglio 1.

Ora devo controllare se il valore/testo della cella la A1 del foglio1 è presente nel foglio2 (archivio) alla colonna F che contiene l'elenco dei dati.
Se il valore/testo di foglio1 cella A1 esiste in foglio2 colonna F confrontalo con il valore/testo di foglio2 colonnaH se i valori di foglio1 cella A1 e foglio2 cella F e H sono tutti e tre uquali passa alla cella A3 del foglio3 il valore di foglio1 A1 se sono differenti passa al foglio3 cella A3 il valore/testo di foglio2 della colonna H.

In pratica posso riassumere per rendere la cosa più chiara:
foglio1 cella A1 = 1
foglio2 in una qualsiasi cella della colonna F è presnete 1
foglio2 in una qualsiasi cella della colonna H è presente 1
passa al foglio3 cella A3 il valore 1

viceversa
foglio1 cella A1 = 1
foglio2 in una qualsiasi cella della colonna F è presnete 1
foglio2 in una qualsiasi cella della colonna H è presente 2
passa al foglio3 cella A3 il valore 2

Spero di essere stato abbastanza chiaro e che qualcuno riesca a darmi una mano.

Grazie

Risposta : Cerca confronta estrai di giorgio
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

Cognolato Studio © 2005