cercavert su altra cartella
Hai un problema con Excel? 
cerca.vert su altra cartella
di kaigoo66 data: 01/07/2014 22:36:19
Buonasera,
premetto che conosco molto poco VBA quindi scusate eventuali mancanze
Come da codice riportato utilizzo un cerca verticale per ricercare un dato e riportarlo in una cella di destinazione (D5)
e fin qui nessun problema. Mi serve la stessa logica per un cerca verticale che punti su una cartella esterna (sempre di excel)
che potrebbe essere sia chiusa che aperta.
Quindi ci sarebbe da modificare la seconda parte della formula cioè in C:Documenti....Worksheets("Gruppi").Range("A:BC"), 12, False)
ho provato alcuni sistemi senza nessun risultato
Grazie anticipatamente
Cells(5, 4) = WorksheetFunction.VLookup(Worksheets("Compilatore").Range("A5"), Worksheets("Gruppi").Range("A:BC"), 12, False) |
di Grograman (utente non iscritto) data: 02/07/2014 16:09:44
Uhm... a naso non potrà mai funzionare se il file è chiuso, indipendentemente dalla sintassi.
Questo perchè l'erore del Vlookup NON è gestito dalla worksheetfunciton e la formula su un file chiuso darà appunto SEMPRE l'errore.
Se invece ci alleghi il file possiamo vedere come scriverla per usare una variabile al posto del percorso fisso.
di alfrimpa (utente non iscritto) data: 03/07/2014 11:40:50
Ciao Grograman
Lungi da me l'intenzione di volerti smentire (sono frequentatore anche di altri forum su Excel quindi ti "conosco" e ti stimo tantissimo ma.
se in un file chiamato "prova.xlsx" ho la seguente tabella
mario rossi 10
alfredo bianchi 20
giuseppe verdi 30
ed in altro file (con "prova.xlsx" chiuso) inserisco la seguente formula
=CERCA.VERT(D1;'C:prova[prova.xlsx]Foglio1'!A1:C10;2;FALSO) viene restituito il dato corretto.
Se quindi la cosa funziona sul foglio di lavoro non si dovrebbe arrivare allo stesso risultato anche con il VBA?
Mi farebbe piacere conoscere il tuo illuminato parere
Un saluto.
Alfredo
di lepat (utente non iscritto) data: 03/07/2014 11:47:23
perché perdere tempo a fare congetture senza avere i file su cui lavorare ?
di alfrimpa (utente non iscritto) data: 03/07/2014 12:02:21
Si Lepat hai perfettamente ragione.
Poiché ricordavo che in Excel si potevano inserire sul foglio di lavoro funzioni con riferimenti a file esterni (chiusi) ho solo cercato di verificare se il mio ricordo fosse giusto o meno
Comunque, in linea generale, se tu dovessi "tradurre" in VBA la predetta CERCA.VERT come la scriveresti?
Io c'ho provato ma mi dà sempre errore per la presenza degli apici e del punto esclamativo.
Giusto sempre per imparare qualcosa in più.
Alfredo
di alfrimpa (utente non iscritto) data: 03/07/2014 12:17:41
Aggiungo che in VBA ci dovrebbe essere il modo (in Application.WorksheetFunction.VLookup) di inserire il percorso completo di un file sostituendo gli apici ed il punto esclamativo (previsti dalla sintassi per il cerca.vert sul foglio di lavoro) con qualcos'altro. Si tratta di scoprire con cosa.
Ho fatto qualche ricerca in rete ma non sono stato capace di trovare nulla.
Alfredo
di alfrimpa (utente non iscritto) data: 03/07/2014 12:40:33
Ho provato a buttar giù una UDF ma alla riga n. 4 "Set miofoglio = "C:prova[prova.xlsx]Foglio1"
mi dà "Errore di compilazione - Tipo non corrispondente"
Dove sbaglio?
Alfredo
Function Trovavalore(cella)
Dim tabella As Range
Dim miofoglio As Worksheet
Set miofoglio = "C:prova[prova.xlsx]Foglio1" <-- su questa riga mi dice "tipo non corrispondente"
Set tabella = miofoglio.Range("A1:C10")
Trovavalore = Application.WorksheetFunction.VLookup(cella, tabella, 2, False)
End Function
|
di lepat (utente non iscritto) data: 03/07/2014 13:04:49
"C:prova[prova.xlsx]Foglio1" è una stringa, quindi non la puoi assegnare ad una variabile Worksheet
di alfrimpa (utente non iscritto) data: 03/07/2014 13:47:26
Si d'accordo ma se dichiaro miofoglio as string mi va in errore alla successiva istruzione dicendomi "Necessario oggetto".
Come si fa ad impostare miofoglio con un foglio presente in un file esterno (chiuso)?
Alfredo
di Grograman (utente non iscritto) data: 03/07/2014 14:27:53
Ad ogni modo ha ragione lui... funziona anche a file chiuso!
Mi sconfondevo mi sa con la INFO.DATI.PIVOT
Sorry!
di Grograman (utente non iscritto) data: 03/07/2014 14:30:56
Option Explicit
Sub verto()
Dim sPath As String, sFile As String, sSheet As String
sPath = "C:prove"
sFile = "prova.xlsx"
sSheet = "Foglio1"
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'" & sPath & "[" & sFile & "]" & sSheet & "'!RC[-1]:R[9]C[1],1,FALSE)"
End Sub
|
di alfrimpa (utente non iscritto) data: 03/07/2014 14:36:59
Grogr
Ma "lui" sarei io?
Ma non te la puoi cavare così! Possibile che un riconosciuto mago del VBA come te non riesca a tradurre un banale cerca.vert su un file esterno in Visual Basic?
Stavo pensando un'alra cosa: e se si passasse (come parametro della function) anche il path del file secondo te funzionerebbe? Anche se poi c'è la seccatura di dover scrivere detto path in una cella del foglio.
Alfredo
di alfrimpa (utente non iscritto) data: 03/07/2014 14:38:31
Perdonami Grogr
ma mentre scrivevo ho visto che hai risposto.
Alfredo
di Grograman (utente non iscritto) data: 03/07/2014 14:46:19
Bhè non è proprio quella che volevi tu, usa la formula lato foglio e non il vlookup di vibia!
di alfrimpa (utente non iscritto) data: 03/07/2014 15:01:04
In verità io cercavo una qualche soluzione al quesito posto inizialmente da Kaigoo66 che poi non è più intervenuto.
Anch'io avrei usato il cerca.vert lato foglio.
Comunque grazie delle tue risposte.
Alfredo
di kaigoo66 (utente non iscritto) data: 03/07/2014 17:46:44
Buonasera a tutti e grazie per le risposte
volevo inserire i file, ma avete fatto tutto lo stesso.
Ho provato e funziona dovrò fare alcune modifiche, ma nella totalità è ottimo
e grazie ancora
Vuoi Approfondire?