Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Office suite

Notices

Rispondi
 
Strumenti discussione
Vecchio 09-01-2015, 20.18.10   #1
Paolo_11
Newbie
 
Registrato: 09-01-2015
Messaggi: 3
Paolo_11 promette bene
VLOOKUP - ricerca in 2 fogli

Ciao a tutti, provo a descrivere il problema:
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
qualcuno riesce a darmi una mano?

Grazie in anticipo
Paolo_11 non è collegato   Rispondi citando
Vecchio 09-01-2015, 21.08.12   #2
RunDLL
Gold Member
 
L'avatar di RunDLL
 
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
RunDLL è nella strada per il successo
Rif: VLOOKUP - ricerca in 2 fogli

Magari sì se formuli la richiesta.
___________________________________

Ogni computer ha la sua storia.
Dermatite Seborroica? www.dermatiteseborroica.info
RunDLL non è collegato   Rispondi citando
Vecchio 09-01-2015, 21.20.08   #3
Paolo_11
Newbie
 
Registrato: 09-01-2015
Messaggi: 3
Paolo_11 promette bene
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.......
Paolo_11 non è collegato   Rispondi citando
Vecchio 11-01-2015, 00.06.46   #4
RunDLL
Gold Member
 
L'avatar di RunDLL
 
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
RunDLL è nella strada per il successo
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
RunDLL non è collegato   Rispondi citando
Vecchio 11-01-2015, 08.58.21   #5
Paolo_11
Newbie
 
Registrato: 09-01-2015
Messaggi: 3
Paolo_11 promette bene
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
Mio codice che adesso funziona:

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
ci saranno sicuramente delle imperfezioni ma almeno arriva al risultato desiderato!!!!
Paolo_11 non è collegato   Rispondi citando
Vecchio 11-01-2015, 22.12.09   #6
RunDLL
Gold Member
 
L'avatar di RunDLL
 
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
RunDLL è nella strada per il successo
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
RunDLL non è collegato   Rispondi citando
Vecchio 13-01-2015, 20.51.14   #7
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
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
dove il foglio Dati è quello che riceve i valori estratti da Foglio1, nel caso di 2 fogli, si può simulare un errore se non trova il valore e gestirlo per dirottare il flusso sul secondo foglio (al posto del MsgBox che annuncia il n° di errore)

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 -
Alexsandra non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

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

Orario GMT +2. Ora sono le: 19.22.12.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.