| 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 |
|