Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Ricerca testo estesa a + fogli di calcolo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 18/02/11 12:04

Ciao a tutti!!

mi stavo accingendo a realizzare una macro.


vorrei una macro che ricerchi un valore dato (per esempio una lista di codici presenti in un file excel di partenza)
in ogni foglio relativo ad ogni file excel in una cartella ben precisa.


Mi servirebbe capire da che foglio\file Excel viene ricavata la risposta affermativa sulla ricerca e in caso negativo, una semplice dicitura che compaia a fianco del valore ricercato, ad esempio "Non trovato".

Il mio problema risiede nel dubbio sul come fare per avere un valore tipo:

"trovato"---> vai a scrivere dove a fianco alla cella - passa se c'è alla cella sottostante successiva (se presente)
"non Trovato" ----> vai a scrivere a fianco alla cella non trovato - passa alla cella sottostante (se presente)


ho provato a registrare una macro usando la funzione "trova" ma non ho visto un valore "positivo" "negativo" che mi possa aiutare...

come posso fare?


vi ringrazio anticipatamente! ;)
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Sponsor
 

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Anthony47 » 18/02/11 19:55

Comincia a fare una macro che lavora su un solo file, usando il metodo Find applicato all'oggetto Range e l' esempio che trovi nell' help on line del vba, solo fino alla riga If Not c Is Nothing Then, condizione verra se hai trovato una corrispondenza in quel foglio.

Dovrai inserire quel codice, adattato, in un loop For I=1 to ActiveWorkbook.Worksheets.Count /Next I, e userai I come indice per selezionare ogni foglio del workbook su cui stai lavorando; a sua volta inserito in ul ciclo per ogni valore presente nel tuo elenco.

Dopo che hai avuto un funzionamento ok su un unico file ti daremo le istruzioni per ripetere su piu' file; nel frattempo dicci anche quale versione di excel usi.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 19/02/11 10:41

Grazie mi metto all'opera!! ;)
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 21/02/11 12:24

Ciao,


ecco qui:

Codice: Seleziona tutto
Sub Scout()

    'Elimina celle vuote
       
    Range("A" & Rows.Count).End(xlUp).Select
    Range("A1", Selection).Select
   
    For Each cell In Selection
        If cell = "" Then
        Selection.SpecialCells(xlCellTypeBlanks).Select
        Selection.Delete Shift:=xlUp
        Exit For
        End If
    Next
   
    'Elimina Spazi
   
    Columns("A:A").Select
    Selection.Replace what:=" ", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
   
    'Selezione area barcode di ricerca
   
    Range("A" & Rows.Count).End(xlUp).Select
    Range("A1", Selection).Select
   
    'Dichiarazioni
    Dim Desk As String
    Desk = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeparator & "Archivio"
   
    Dim barcode As Range
    Dim SearchingArea As String
    SearchingArea = Selection.Address
 
'Start Check
  Riga = Sheets("Risultato").Range("A1").Row '& Rows.Count).End(xlUp).Row
 
For Each barcode In Range(SearchingArea)

'resultingpoint = Cells(Riga, 2)


    Dim lCount As Long
    Dim wbResults As Workbook
    Dim wbCodeBook As Workbook
   
   
    Application.DisplayAlerts = False
    'Application.EnableEvents = False
   
    On Error Resume Next
        Set wbCodeBook = ThisWorkbook
            With Application.FileSearch
                .NewSearch
                .LookIn = Desk
                .FileType = msoFileTypeExcelWorkbooks
                'Optional filter with wildcard
                '.Filename = "Book*.xls"
                    If .Execute > 0 Then 'Workbooks in folder
                        For lCount = 1 To .FoundFiles.Count 'Loop through all
                            'Open Workbook x and Set a Workbook variable to it
                            Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)
                            nome = ActiveWorkbook.Name
                            'MsgBox "This WB is " & nome & " " & barcode
                            'comincia il giro dei fogli
                            Dim wks As Worksheet
                                For Each wks In Worksheets
                                sh33t = wks.Name
                                Sheets(sh33t).Select
                                    ActiveSheet.UsedRange.Select
                                    For Each cell In Selection
                                        If cell = barcode Then
                                        cell.Select
                                        indirizzo = nome & " " & sh33t & " " & ActiveCell.AddressLocal
                                        Exit For
                                        End If
                                   
                                    Next
                                If indirizzo <> "" Then
                                Exit For
                                End If
                                Next
                            If indirizzo <> "" Then
                            wbResults.Close SaveChanges:=False
                            Exit For
                            End If
                        wbResults.Close SaveChanges:=False
                        Next lCount
                    End If
            End With
    On Error GoTo 0
       
        If indirizzo <> "" Then
        Cells(Riga, 2) = indirizzo
        indirizzo = ""
       
        ElseIf indirizzo = "" Then
        Cells(Riga, 2) = "Barcode Non Trovato: Da Fatturare!!!"
       
        End If
       
    Riga = Riga + 1
 Next
   

End Sub





Non ho usato FIND... forse era meglio...ho provato ad usare i "miei metodi"....effettivamente funziona MA:

se la cella presa in esame contiene un errore o una formula...questi sfalsa il mio report riportandolo come risultato ottenuto a fianco al codice di partenza ricercato all'inizio....

Any Ideas?
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 21/02/11 14:21

analizzando ho notato che è l'"Errore 2023" a far saltare il ciclo.

On Error Resume Next non è servito a nulla.

la cella riporta semplicemente "#RIF!"

(per evitare rogne prima ho attivato un copia\incolla sul range selezionato)...

:cry: non capisco!
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 21/02/11 14:48

forse ho risolto con un if cstr(cell.value) = "Errore 2023".... ;)
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 21/02/11 17:43

La macro dopo un certo numero di fogli excel gestiti manda il pc in collo di bottiglia....

il pc è un signor pc....


....che delusione :mmmh:

ma è mai possibile che quando uno cerchi una soluzione ai problemi + noiosi tocchi fare sempre a manina? :roll:


sigh :cry:
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi ricky53 » 21/02/11 20:25

Ciao,
povero PC ma hai visto cosa fai fare alla macro

ciclare per il numero di righe della colonna "A"
e
per ogni ciclo apre tutti i file presenti nel percorso da te indicato
e
per ogni file
e per ogni foglio
scorre le celle ...
alla fine non c'è la fa più
ed ha ragione !!!
sarebbe meglio tentare di ottimizzare la macro.
Ad esempio: le aperture di tutti i file non farle fare per ogni riga della colonna "A" ma una volta sola e poi scorri la colonna "A" e ...

inizia e vedrai che i tempi miglioreranno

Inserisci
Codice: Seleziona tutto
Application.Screeunpdating = False

Puoi anche impostare il ricalcolo a "Manuale"
E già ci guadagnerai ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Ricerca testo estesa a + fogli di calcolo

Postdi ricky53 » 21/02/11 20:28

Ciao
correzione (ho invertito "u" ed "n")
Codice: Seleziona tutto
Application.Screenupdating = False
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 21/02/11 20:32

hai ragione...adesso rivedo la macro.

ma il calcolo manuale...cosa cambia esattamente?

Nelle opzioni ogni tanto lo settavo, e cercando info non son riuscito a capire esattamente a cosa servisse... :(
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Anthony47 » 22/02/11 00:08

Ma poi perche' non hai usato il Find?

Il processo che farei e':
-apri un file target
-Find un codice del file di partenza in ogni foglio del target
-ripeti per ogni codice del file di partenza
-passi al file successivo

A dirsi sembra facile, ma visto quello che hai gia' fatto non dovresti avere problemi.

Il calcolo manuale serve a impedire che il file debba ricalcolare le formule in caso ci siano dei cambiamenti sul foglio. Il suo uso serve a non rallentare l' esecuzione delle macro, ma ovviamente va valutato se ci sono effetti controproducente nel foglio non aggiornato in continuo; vedi anche l' istruzione Calculate.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Black.Jack » 22/02/11 12:54

ho provato a cerca dei Find...ma non funzionavano (se usavo delle istruzioni "corte").

Negli esempi trovati in rete per i Find organizzati come Funzioni erano veramente molto complessi e spesso non mi funzionavano...sicuramente perchè non ho studiato minuziosamente il funzionamento di essi.

Volevo qualcosa di semplice (e funzionante!) da cui partire ma incredibilmente non l'ho ancora trovato!
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: Ricerca testo estesa a + fogli di calcolo

Postdi Anthony47 » 22/02/11 22:16

Se invii un .zip con u esempio di file indice e 4-5 esempi di file in cui cercare potremmo povare a essere piu' precisi.
Dovresti anche chiarire i criteri di fine ricerca: fine al primo fìnd o vuoi cercare tutte le occorrenze (ma per fare poi che cosa?)?
E la conferma che lavorerai su versione inferiore a xl2007

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Ricerca testo estesa a + fogli di calcolo":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti