Ricerca all'interno di 2 o più fogli di calcolo (facenti parte dello stesso file) della posizione di una cella contenente un valore, digitando il valore

Anonimo
2024-04-13T18:15:25+00:00

Ho un file di Excel diviso in 8 fogli. All'interno di ogni foglio c'è una tabella le cui celle contengono testo e/o numeri (divisa in 8 parti x 7 parti. ognuna di queste parti contiene 6 celle). Vorrei creare una ricerca per trovare la cella che contiene il numero/testo che ho digitato. Praticamente questo foglio di calcolo viene usato per trovare della componentistica riposta su alcuni scaffali di un magazzino. Ogni singola tabella rappresenta Ripiani e Scaffali e i codici contenuti in ogni scaffale rappresentano un componente. La mia difficoltà sta nel trovare il numero del componente all'interno degli scaffali: dunque digitando il numero del componente vorrei mi fosse restituito il valore della cella e del foglio che lo contiene. Spero di aver spiegato bene.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

3 risposte

Ordina per: Più utili
  1. Anonimo
    2024-04-14T07:13:18+00:00

    Ciao,

    oltre alla soluzione proposta da Icelynn - MSFT, la quale richiede l'individuazione di tutti i possibili intervalli dove effettuare la ricerca del codice, una possibile soluzione alternativa potrebbe essere quella di sfruttare la funzione "Trova" di Excel.

    Questa una macro che una volta inserito un codice nella InuptBox effettua una ricerca tra tutti i fogli e quando trova la prima occorrenza si ferma e seleziona il foglio e la cella dove il valore viene trovato.

    Sub TrovaCodice()

    Dim sCodice As String

    Dim i As Long

    Dim rng As Range

    sCodice = Application.InputBox("Inserire Codice da Ricercare", "Ricerca Codice", , , , , , 2)

    For i = 1 To ThisWorkbook.Worksheets.Count

      Set rng = Worksheets(i).Cells.Find(What:=sCodice, \_ 
    
                                         After:=ActiveCell, \_ 
    
                                         LookIn:=xlValues, \_ 
    
                                         LookAt:=xlPart, \_ 
    
                                         SearchOrder:=xlByRows, \_ 
    
                                         SearchDirection:=xlNext, \_ 
    
                                         MatchCase:=False, \_ 
    
                                         SearchFormat:=False) 
    
      If Not rng Is Nothing Then 
    
         With rng 
    
            .Parent.Select 
    
            .Select 
    
         End With 
    
         Exit For 
    
      End If 
    

    Next i

    If rng Is Nothing Then

      MsgBox "Il codice " & sCodice & " non è stato trovato!", vbExclamation, "Ricerca Codice" 
    

    End If

    End Sub

    Nel caso da adattare alla modalità di digitazione preferita (es. inserimento del dato in una cella di un determinato foglio con intercettazione del valore inserito e successiva ricerca).

    Edit: ho fatto una modifica per lanciare un messaggio nel caso il codice non venga trovato in nessun foglio.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2024-04-13T19:17:35+00:00

    Siamo spiacenti, il bot di traduzione incasina sempre il codice, guarda il codice della seconda risposta qui:

    Sub SearchComponent()

    Dim searchValue As String 
    
    Dim ws As Worksheet 
    
    Dim cell As Range 
    
    Dim found As Boolean 
    
    found = False 
    
    ' Prompt the user to enter the component number or text to search for 
    
    searchValue = InputBox("Enter the component number or text to search for:") 
    
    ' Loop through each worksheet 
    
    For Each ws In ThisWorkbook.Sheets 
    
        For Each cell In ws.Range("A1:G48")  ' Modify this range as needed 
    
            If InStr(1, cell.Value, searchValue, vbTextCompare) > 0 Then  ' Fuzzy matching 
    
                ' Output the results in a message box or to a specific cell 
    
                MsgBox "Component found in Sheet: " & ws.Name & ", Cell: " & cell.Address & ", Value: " & cell.Value 
    
                found = True 
    
                Exit Sub 
    
            End If 
    
        Next cell 
    
    Next ws 
    
    If Not found Then 
    
        MsgBox "Component not found." 
    
    End If 
    

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-04-13T19:15:52+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao, Riccardo L1

    Benvenuto nella community Microsoft.

    Sembra che le tue esigenze siano più diversificate e puoi raggiungerle con l'aiuto di macro e automazione. Ovvero creare una soluzione VBA che cerchi in più fogli di lavoro in un file Excel un valore specifico e restituisca la posizione della cella contenente tale valore, puoi seguire i passaggi seguenti. Questo codice VBA scorrerà ogni foglio e ogni cella in un intervallo definito, alla ricerca del testo o del numero inserito. Quando trova il valore, fornirà il nome del foglio, l'indirizzo della cella e il valore stesso.

    Prima di iniziare, puoi condividere il tipo di dati che stai cercando? Hai bisogno di una corrispondenza esatta o di una corrispondenza fuzzy? Ho fatto un esempio qui sotto. Ad esempio, la tua parte è GB2123 e vuoi solo inserire parte del numero 2123. Restituisce quindi il valore della cella in cui si trova GB2123 e il foglio di lavoro che lo contiene. Se disponi di una descrizione specifica dei dati, condividi il file. È possibile caricarlo sul disco di rete e condividere il link per il download. Se i dati del tuo file riguardano la privacy personale, puoi condividerli in un messaggio privato.

    Ecco come è possibile eseguire una corrispondenza fuzzy nella funzione di ricerca VBA, consentendo corrispondenze parziali all'interno del contenuto della cella (ad esempio, trovando "GB2123" semplicemente digitando "2123")), è possibile modificare il codice VBA esistente per utilizzare la funzione InStr. Questa funzione controlla se una stringa è contenuta all'interno di un'altra, il che è l'ideale per le tue esigenze.

    1. Aprire la cartella di lavoro di Excel.
    2. Inserire un pulsante:

    La risposta è stata utile?

    0 commenti Nessun commento