Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-04-2009, 19:51   #1
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
[Excel]cerca.vert

ciao, come si effettua un cerca.vert su tutti i fogli?

tipo =cerca.vert("HW";Foglio1!Foglio2!Foglio3!;3;FALSO)
non funziona nemmeno se inserisco il nome della cartella di lavoro =cerca.vert("HW";Cartella di lavoro!;3;FALSO)...boh suggerimenti?
swr è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 09:19   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Come singola Funzione non si può fare, perchè ovviamente ritornerebbe un valore per ogni Foglio. Se ad esempio vuoi una Somma tra tutti i CERCA.VERT sui vari Fogli, puoi costruirti una Funzione che somma ogni singolo CERCA.VERT per ogni Foglio.
Se invece, indipendentemente dal numero dei Fogli, vuoi fare un ciclo e ricevere un array di risultati, la strada è VBA...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 14:37   #3
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
ciao Marco ...devo cominciare a studiare un pò di VBA perchè è un ottimo strumento quando ci si trova con formule troppo complesse, sul quesito dell'altro giorno infatti non sono riuscito ad applicarlo XD

tornando all'oggetto...
purtroppo i fogli risulteranno alla fine circa 150 quindi inserli nella funzione mi pare proibitivo, la ricerca dovrebbe risultare in questo modo....

cella Q5 con il valore "Pluto" in Foglio1 da cercare in Foglio2, Foglio3, Foglio4 etc...lo trova ad es. nel Foglio75 nella cella AG35 e dovrebbe riportare l'intervallo AG36:AG40 in Q6:Q10 del Foglio1

se non risultasse impegnativo un'istruzione VBA con i valori come in esempio come dovrebbe essere?
swr è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 14:52   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Però. 150 Fogli. Ti stai intrippando in qualcosa di grandicello...
A sto punto direi che il CERCA.VERT ce lo siamo giocato. Ok, appena ho tempo ci provo...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 15:21   #5
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
asd XD è vero perchè per ogni foglio ci sono riferimenti a dati esterni che se collocassi assieme diventerebbe troppo incasinato cmq thx gentilissimo^^
swr è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 18:48   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
OK, prova questa soluzione :

1. In un modulo :

Codice:
Public Function UltimaCellaUtile(nomeFoglio As String) As String

    Dim UC As Integer
    Dim UR As Long
    If WorksheetFunction.CountA(Worksheets(nomeFoglio).Cells) > 0 Then
        UC = Worksheets(nomeFoglio).Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
        UR = Worksheets(nomeFoglio).Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        UltimaCellaUtile = Cells(UR, UC).Address
    Else
        UltimaCellaUtile = Cells(1, 1).Address
    End If
 
End Function

Public Sub Esegui()

    Dim cellaRicerca As String
    cellaRicerca = "Q5"
    Dim cellaIncolla As String
    cellaIncolla = Range(cellaRicerca).Offset(1, 0).Address ' Address Q6
    MsgBox cellaIncolla

    Dim valRicerca As Variant
    valRicerca = Range(cellaRicerca).Text
    Dim F As Worksheet
    Dim R As Range
    Dim cellaLimite As String
    For Each F In ThisWorkbook.Worksheets
        If F.Name <> "Foglio1" Then
            cellaLimite = UltimaCellaUtile(F.Name)
            For Each R In F.Range("A1:" & Range(cellaLimite).Address)
                'Trova la prima occorrenza di valRicerca / Esegui / Esci dal ciclo
                If R.Text = valRicerca Then
                    MsgBox R.Address
                    F.Range(R.Offset(1, 0).Address, R.Offset(5, 0).Address).Copy
                    Worksheets("Foglio1").Range(cellaIncolla).Select
                    ActiveSheet.Paste
                    GoTo FINE
                End If
            Next R
        End If
    Next F
    
FINE:

End Sub
2. Codice utilizzatore ( ad esempio Button su Foglio1... ) :

Codice:
Esegui
Direi che c'è tutto, chiaramente andrà modificato qualora i cicli debbano continuare dopo aver trovato la prima occorrenza ecc..., ma il concetto di base dovrebbe essere questo.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 19:49   #7
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
cos'è il codice utilizzatore? lol

cmq ho provato la macro, praticamente cerca il valore di Q5(Foglio1), lo trova in AG35(Foglio75) copia il range AG36:AG40(Foglio 75) e lo incolla nel range Q6:Q10(Foglio1)...il problema è che all'interno del range trovato ci sono delle formule, quindi ovviamente incolla pure quelle ed esce #RIF!
swr è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2009, 22:25   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da swr Guarda i messaggi
cos'è il codice utilizzatore? lol
Un modo un po' forbito per dire che quella chiamata ad "Esegui" fa "partire tutto" ( cos'è una chiamata ? )...

Quote:
Originariamente inviato da swr Guarda i messaggi
cmq ho provato la macro, praticamente cerca il valore di Q5(Foglio1), lo trova in AG35(Foglio75) copia il range AG36:AG40(Foglio 75) e lo incolla nel range Q6:Q10(Foglio1)...il problema è che all'interno del range trovato ci sono delle formule, quindi ovviamente incolla pure quelle ed esce #RIF!
Beh, allora direi che va tutto bene, no ?
A questo punto piglia la vecchia Sub Esegui(), e sostituiscila con questa :

Codice:
Public Sub Esegui()

    Dim cellaRicerca As String
    cellaRicerca = "Q5"
    Dim cellaIncolla As String
    cellaIncolla = Range(cellaRicerca).Offset(1, 0).Address ' Address Q6
    MsgBox cellaIncolla

    Dim valRicerca As Variant
    valRicerca = Range(cellaRicerca).Text
    Dim F As Worksheet
    Dim R As Range
    Dim cellaLimite As String
    For Each F In ThisWorkbook.Worksheets
        If F.Name <> "Foglio1" Then
            cellaLimite = UltimaCellaUtile(F.Name)
            For Each R In F.Range("A1:" & Range(cellaLimite).Address)
                'Trova la prima occorrenza di valRicerca / Esegui / Esci dal ciclo
                If R.Text = valRicerca Then
                    MsgBox R.Address
                    F.Range(R.Offset(1, 0).Address, R.Offset(5, 0).Address).Copy
                    Worksheets("Foglio1").Range(cellaIncolla).PasteSpecial Paste:=xlValues, Operation:=xlPasteSpecialOperationNone
                    GoTo FINE
                End If
            Next R
        End If
    Next F
    
FINE:

End Sub
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2009, 21:25   #9
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
ciao grande!^^ torno solo adesso, domani provo l'istruzione e ti dico...

PS: cos'è una chiamata? XDXDXDXD

Ultima modifica di swr : 29-04-2009 alle 21:29.
swr è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2009, 22:58   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da swr Guarda i messaggi
ciao grande!^^ torno solo adesso, domani provo l'istruzione e ti dico...

PS: cos'è una chiamata? XDXDXDXD
Dicesi chiamata... Ma vaaaaa !
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2009, 13:50   #11
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
provato e funziona perfettamente, mittico! comincio a capire anche qualche istruzione tipo gli offset per i range. Alcune domande di dettaglio e contorno XD...

1) quando la macro completa il ciclo, visualizza 2 "msgbox" con le celle Q6 e AG35...è possibile eliminarli?

2) se Q6(valore da cercare) è vuota crea il copia/incolla da A1 con altri dati, vorrei invece che rimanesse vuota anche facendo partire la macro

3) precedentemente hai fatto riferimento al fatto che si poteva modificare l'istruzione nel caso in cui i cicli devono continuare la ricerca anche dopo aver trovato la prima occorrenza; ecco, volendolo adattare ad altro....tipo: cerca Q5 lo trova nel Foglio75 copia/incolla range in Q6...cerca Q5 lo trova nel Foglio90 copia/incolla range in Q7...cerca Q5 lo trova nel Foglio103 copia/incolla range in Q8 etc...

4) che non è correlata alla macro...avvolte aggiornando alcune query viene inserita una colonna extra che ovviamente va a "sballare" i cerca.vert...sempre con l'ausilio di VBA, si può eliminare in automatico questa colonna extra se viene creata una volta aggiornata la query?

direi che è tutto lol XD se è troppo NP sei già stato un grande

Ultima modifica di swr : 30-04-2009 alle 13:52.
swr è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2009, 14:36   #12
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da swr Guarda i messaggi
1) quando la macro completa il ciclo, visualizza 2 "msgbox" con le celle Q6 e AG35...è possibile eliminarli?
Certo. le avevo lasciate solo a scopo di "debug". Elimina le due linee di codice :

Codice:
MsgBox cellaIncolla

MsgBox R.Address
Quote:
Originariamente inviato da swr Guarda i messaggi
2) se Q6(valore da cercare) è vuota crea il copia/incolla da A1 con altri dati, vorrei invece che rimanesse vuota anche facendo partire la macro
Chiaramente se vuoi usare la Sub Esegui() in un ciclo dovrai poi gestire le varie eccezioni che prevedi si presentino. Nel caso della cella origine vuota, condizionare con un If, in modo che non entri nel ciclo successivo...

Quote:
Originariamente inviato da swr Guarda i messaggi
3) precedentemente hai fatto riferimento al fatto che si poteva modificare l'istruzione nel caso in cui i cicli devono continuare la ricerca anche dopo aver trovato la prima occorrenza; ecco, volendolo adattare ad altro....tipo: cerca Q5 lo trova nel Foglio75 copia/incolla range in Q6...cerca Q5 lo trova nel Foglio90 copia/incolla range in Q7...cerca Q5 lo trova nel Foglio103 copia/incolla range in Q8 etc...
Certo. Dovrai anzitutto eliminare l'istruzione "GoTo FINE" e sostituirla con un "Exit For", in tal caso la ricerca della prima occorrenza su un determinato Foglio non produrrà più l'uscita dal ciclo For esterno ( quello sui Fogli ), ma il passaggio al Foglio successivo.
Inoltre dovrai inserire un contatore per generare, ad ogni occorrenza trovata, il nuovo Range in cui incollare...

Quote:
Originariamente inviato da swr Guarda i messaggi
4) che non è correlata alla macro...avvolte aggiornando alcune query viene inserita una colonna extra che ovviamente va a "sballare" i cerca.vert...sempre con l'ausilio di VBA, si può eliminare in automatico questa colonna extra se viene creata una volta aggiornata la query?
Questo non mi è chiaro. E' un po' difficile spiegare "a distanza", man mano che le cose si fanno più complicate. In ogni caso l'eliminazione di una colonna non desiderata è semplicissima :

Codice:
Columns("F:F").Delete Shift:=xlToLeft
> elimina tutta la colonna F ed esegue lo Shift di tutto il contenuto del Foglio
che si trova a destra della colonna eliminata, verso sinistra.

Quote:
Originariamente inviato da swr Guarda i messaggi
direi che è tutto lol XD se è troppo NP sei già stato un grande
Adesso hai gli elementi per divertirti . Ti sarai accorto che ciò che chiedevi, e che via via vuoi aggiungere, non è certo elementare...

Un ultimo consiglio che ti do, soprattutto avendo a che fare con VBA, che non è certo il linguaggio più "riutilizzabile" e "rimodificabile" del mondo, è anzitutto di mettere in chiaro da SUBITO cosa vuoi ottenere ( fai un'analisi completa del progetto prima di scrivere codice ), e cerca per quanto ti è possibile di parametrizzare tutto quello che fai.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2009, 16:31   #13
swr
Member
 
L'Avatar di swr
 
Iscritto dal: May 2005
Messaggi: 59
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Inoltre dovrai inserire un contatore per generare, ad ogni occorrenza trovata, il nuovo Range in cui incollare...
al momento non saprei proprio come fare, più avanti forse...


Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Ti sarai accorto che ciò che chiedevi, e che via via vuoi aggiungere, non è certo elementare...
azz, ho notato thx Marco N°1
swr è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
Col Black Friday partono anche gli scont...
I ribassi più pesanti del vero Bl...
Settimana del Black Friday: pioggia di s...
Speciale Blay Friday Dyson, sconti mai v...
I portatili più scontati del Blac...
WiFi al massimo: gli ASUS più pot...
Domotica in super sconto: tado° e Ne...
Black Friday Amazon: smartphone top a pr...
Black Friday 2025: tutte le migliori off...
Speciale Black Friday TV: 14 modelli sup...
Black Friday Amazon: le migliori offerte...
Tanti droni DJI scontati per il Black Fr...
Anche l'ISRO ha rilasciato alcune inform...
La NASA mostra le nuove immagini della c...
Superati 13.300 MT/s per DDR5: ad ASUS e...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v