|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
09-01-2015, 20.18.10 | #1 |
Newbie
Registrato: 09-01-2015
Messaggi: 3
|
VLOOKUP - ricerca in 2 fogli
ho la necessità in base ad un elenco di città di ricercare la corrispondente sigla nazione, la cartella è cosituita da tre fogli: Foglio 1 colonna A lista città; Foglio 2 Colonna A lista città colonna 2 sigla nazione (65000 record) Foglio 3 Colonna A lista città colonna 2 sigla nazione (30000 record) Con una formula cerca.vert riesco a trovare il valore ma con il VBA no. Codice:
=SE(C9<>"";SE(VAL.NON.DISP(CERCA.VERT(C9;TBNaz!$A$1:$B$65003;2;FALSO));CERCA.VERT(C9;TBNazA!$A$1:$B$65002;2;FALSO);CERCA.VERT(C9;TBNaz!$A$1:$B$65003;2;FALSO));0) Codice:
num = Range("num_indirizzi").Value inizio = Range("inizio").Value Dim NazTb As Range Dim NaztbA As Range Dim Naz2 As String Dim CittaP As String Dim Naz1 As String Dim Nazione As String For J = 1 To num CittaP = IIf(Worksheets("tappe").Cells(inizio + J, 3) <> 0, Worksheets("tappe").Cells(inizio + J, 3), 0) Set NazTb = Worksheets("TbNaz").Range("A1:b65500") Set NaztbA = Worksheets("TbNazA").Range("A1:b65500") Naz = IIf(Application.WorksheetFunction.VLookup(CittaP, NazTb, 2, False) <> "", Application.WorksheetFunction.VLookup(CittaP, NazTb, 2, False), "") 'Naz1 = IIf(naz = "", "", naz) Cells(inizio + J, 24) = Naz Next J num = Range("num_indirizzi").Value inizio = Range("inizio").Value For J = 1 To num Naza = IIf(Application.WorksheetFunction.VLookup(CittaP, NaztbA, 2, False) <> "", Application.WorksheetFunction.VLookup(CittaP, NaztbA, 2, False), "") 'Naz2 = IIf(naza <> "", naza, "") Cells(inizio + J, 25) = Naza Next J Grazie in anticipo |
09-01-2015, 21.08.12 | #2 |
Gold Member
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
|
Rif: VLOOKUP - ricerca in 2 fogli
Magari sì se formuli la richiesta.
___________________________________
Ogni computer ha la sua storia. Dermatite Seborroica? www.dermatiteseborroica.info |
09-01-2015, 21.20.08 | #3 |
Newbie
Registrato: 09-01-2015
Messaggi: 3
|
Rif: VLOOKUP - ricerca in 2 fogli
Scusami ma era scritta forse in modo non comprensibile.......
"..............Con una formula cerca.vert riesco a trovare il valore ma con il VBA no....." in sostanza se applico la formula nel primo foglio il riusltato è corretto; Messina I Palermo I Tunisi TN Parigi F Siracusa I Roma I dove I ed F sono nel Foglio2 mentre TN è nel Foglio 3 Se utilizzo la sub riportata il risultato è il seguente: Messina I Palermo I Tunisi I Parigi F Siracusa I Roma I Spero di essere stato più chiaro....... |
11-01-2015, 00.06.46 | #4 |
Gold Member
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
|
Rif: VLOOKUP - ricerca in 2 fogli
Posso chiederti se con una formula ottieni il risultato desiderato perché vuoi fare una macro?
___________________________________
Ogni computer ha la sua storia. Dermatite Seborroica? www.dermatiteseborroica.info |
11-01-2015, 08.58.21 | #5 |
Newbie
Registrato: 09-01-2015
Messaggi: 3
|
Rif: VLOOKUP - ricerca in 2 fogli
e' un foglio complesso per creare itinerari e non vorrei lasciare formule evidenti per evitare cancellazioni fortuite d'altro canto no posso proteggere tutto dato che alcune celle devono essere modificabili.
Comunque in nottata ho risolto così: Funzione trovata in rete Codice:
Function TrovaC(ByVal daCercare, dove As Range, daRestituire As Range) As Variant With Application If .CountIf(dove, daCercare) Then TrovaC = daRestituire(.Match(daCercare, dove, 0)) End If End With End Function Codice:
num = Range("num_indirizzi").Value inizio = Range("inizio").Value Dim Naz2 As String Dim CittaP As String Dim Naz1 As String Dim Nazione As String Dim naztb As Range Dim naztb1 As Range Dim naztbA As Range Dim naztbA1 As Range For J = 1 To num Set naztb = Worksheets("TbNaz").Range("A1:a65500") Set naztb1 = Worksheets("TbNaz").Range("b1:b65500") Set naztbA = Worksheets("TbNazA").Range("A1:a65500") Set naztbA1 = Worksheets("TbNazA").Range("b1:b65500") CittaP = Worksheets("tappe").Cells(inizio + J, 3) NAz = IIf(TrovaC(CittaP, naztb, naztb1) <> "", TrovaC(CittaP, naztb, naztb1), "") Naza = IIf(TrovaC(CittaP, naztbA, naztbA1) <> "", TrovaC(CittaP, naztbA, naztbA1), "") Naz1 = IIf(NAz = "", Naza, NAz) Cells(inizio + J, 12) = Naz1 Next J |
11-01-2015, 22.12.09 | #6 |
Gold Member
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
|
Rif: VLOOKUP - ricerca in 2 fogli
Bene, grazie per la pubblicazione della soluzione.
Magari Alexsandra ti può dare qualche ragguaglio ma comunque se funziona l'importante è quello.
___________________________________
Ogni computer ha la sua storia. Dermatite Seborroica? www.dermatiteseborroica.info |
13-01-2015, 20.51.14 | #7 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: VLOOKUP - ricerca in 2 fogli
Scusate la breve assenza ma il Pc si è fuso.
per il tema del topic, personalmente non mi piace l'utilizzo dell'istruzione IIF, io avrei usato Find. con un codice come questo: Codice:
Sub prova() Dim ws As Worksheet Dim fglDat, fglDest, cellD, cellOr As Range On Error GoTo Err Set ws = Sheets("Dati") Set fglDest = ws.Range("A2:A16") Set fglDat = Sheets("Foglio1").Range("A2:A16") For Each cellD In fglDest Set cellOr = fglDat.Find(What:=cellD, LookIn:=xlValues) If Not cellD Is Nothing Then cellD.Offset(, 1) = cellOr.Offset(, 1) End If Next Exit Sub Err: MsgBox Err.Description End Sub Ma avendo già risolto il problema, meglio lasciar stare le cose, squadra vincente non si cambia, l'importante è raggiungere l'obbiettivo e risolvere il problema
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Inconveniente con la ricerca e le "parole comuni o troppo corte". | Muttley | Discussioni su WinTricks | 3 | 07-10-2007 14.57.59 |
Appello per la Ricerca | Thor | Archivio News Web | 2 | 29-12-2005 18.35.21 |
Trasformare fogli word in pdf | OverStyl | Office suite | 13 | 18-05-2005 09.51.40 |
Google Trick #2: restringere la ricerca a parti specifiche della pagina [LUNGO] | realtebo | Internet e Reti locali | 2 | 16-03-2005 07.14.22 |
Microsoft con un nuovo motore di ricerca | Gigi75 | Segnalazioni Web | 12 | 14-11-2004 02.26.37 |