Tasto cerca in foglio excel
Hai un problema con Excel? 
Tasto cerca in foglio excel
di Alex984 (utente non iscritto) data: 13/10/2014 13:34:10
Ciao ragazzi.
Come da titolo avrei bisogno di un vostro aiuto per inserire in un foglio excel un tasto che abbia la funzione di cercare del testo o dei numeri all'interno di un singolo f
Mi spiego meglio. Il mio foglio excel ha sostanzialmente 4 colonne. Nella prima (A) ho un codice numerico del tipo 000000000.0. Nella seconda colonna (B) ho la traduzione dei codici riportati nella colonna A (caratteri alfanumerici). Nella colonna C ho un link che se aperto, porta al relativo foglio con una foto esemplificativa del codice.
Tutto quello che voglio fare è questo: dare la possibilità di effettuare una ricerca libera nelle colcolonne A e B (mediante l'inserimento, anche parziale, del codice o della traduzione). Una volta trovata la corrispondenza, mostrare solo le righe che corrispondono alla chiave di ricerca inserita.
Allego un file di esempio per essere un po' più chiaro.
Grazie a tutti!
di Lucas87 data: 13/10/2014 14:29:38
Ciao
Da collegare a due pulsanti, uno per la ricerca e l'altro per ripristinare le righe nascoste.
Se usato più volte cerca solo tra i risultati
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
art = InputBox("Articolo da cercae:")
For i = 1 To Range("a" & Rows.Count).End(xlUp).Row
If InStr(1, Cells(i, 1), art, vbTextCompare) = 0 And InStr(1, Cells(i, 2), art, vbTextCompare) = 0 Then
Rows(i).Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton2_Click()
Rows.Hidden = False
End Sub |
di Alex984 (utente non iscritto) data: 13/10/2014 16:12:07
Ho allegato il file di esempio nel quale ho inserito il codice che mi hai detto. Non ho capito però dove inserire il testo da cercare. Ho inserito una textbox ma non ho molta pratica a dire il vero e non so come farla funzionare. Le colonne in cui deve cercare sono la C e la G.
Grazie mille.
di Lucas87 data: 13/10/2014 18:59:57
1-Se le colonne sono C e G perchè prima hai detto A e B?
2-Perchè le colonne "Descrizione...." sono formate da 3 colonne (D,E,F G,H,I)? Decidi se unire le celle o allargare la colonna...tenerle divise non va bene.
3-Il mio codice non l'hai nemmeno provato altrimenti ti saresti accorto che il valore da cercare lo chiede tramite inputbox.
4-Nel file che hai inserito non c'è proprio nessun codice
Veniamo al codice:
Crea 2 pulsanti e una textbox da Controlli Activex
e incolla i codici
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If TextBox1.Text <> "" Then
For i = 7 To Range("c" & Rows.Count).End(xlUp).Row 'il "c" è la colonna che contiene la descrizione
'3 e 7 sono le colonne C e G. Se cambiano modifica il codice
If InStr(1, Cells(i, 3), TextBox1.Text, vbTextCompare) = 0 And InStr(1, Cells(i, 7), TextBox1.Text, vbTextCompare) = 0 Then
Rows(i).Hidden = True
End If
Next
Else
MsgBox "Inserire un valore da cercare."
End If
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton2_Click()
Rows.Hidden = False
End Sub
|
di Alex984 (utente non iscritto) data: 13/10/2014 19:13:52
No Luca, scusa ma mi sono accorto ora di aver allegato il file sbagliato. In quello di prova che avevo fatto io, avevo incollato il codice che mi avevi allegato. Ho anche notato che la chiave di ricerca andava inserita in una textbox e infatti l'ho aggiunta rinominandola "inputbox" come scritto nel codice. Purtroppo non ho molta dimestichezza con questi strumenti e quindi mi sono arreso facilmente.
Scusa per il malinteso. Credimi che non era una scusa per avere tutto bello e fatto.
Ad ogni modo le tre colonne mi servono per altri motivi, ma comunque i dati andranno inseriti sempre nelle colonne C e G.
Nel primo post ho cercato il più possibile di semplificare e ho detto A e B. Pardon.
Mi spiegheresti come funziona il puntamento delle righe/colonne nel codice? Cioé se voglio leggere la cella G15 cosa devo inserire nel codice?
Poi, se voglio evitare la textbox nel file, ma leggere direttamente da una cella, come posso fare?
Grazie mille per tutto.
di Lucas87 data: 13/10/2014 19:29:37
Il ciclo for va da 7 (riga da cui comincia la tabella) fino al valore definito da range("c" & rows.count).... che corrisponde all'ultima riga usata sulla colonna C (se non è la C ti basta cambiare il "c"). Questo permette di controllare le righe una alla volta.
Con if instr(....controlla se il valore da cercare si trova nelle celle della riga in esame (i) sulle colonne 3 (C) e 7 (G).
Se il valore lo vuoi indicare da una cella ti basta sostituire Textbox1.Text con Range("tuacella").
Inputbox e textbox sono elementi diversi.
Vuoi Approfondire?