riposto questo messaggio, spero che qualcuno riesca a darmi una mano:
Ho un foglio excel dove vengono aggiornati periodicamente dei dati,
ogni riga corrisponde ad un codice univoco
Visto che le righe spesso sono parecchie, vorrei automatizzare il più
possibile questo foglio. Vorrei tramite una macro o del codice VB,
creare una finestra (o tramite una cella dedicata per la ricerca
codici), dove è possibile immettere il codice da ricercare e tramite
un pulsante, vengono visualizzate le righe (o la riga) contenenti il
codice inserito nella finestra o cella dedicata alla ricerca.
poi tramite un altro pulsante, ritornare a visualizzare tutti i codici
presenti.
So che sono presenti degli strumenti, che fanno tutto questo (vedi
filtri), però volevo "automatizzare" il foglio excel..
grazie per qualsiasi aiuto!
@lessia
poi tramite un altro pulsante, ritornare a visualizzare tutti i codici
presenti.
So che sono presenti degli strumenti, che fanno tutto questo (vedi
filtri), però volevo "automatizzare" il foglio excel..
grazie per qualsiasi aiuto!
*****************************************************
Lavoriamo un po' di fantasia...
La tua tabella nelle colonne A e B
I codici da filtrare in A
Avvia il registratore Macro
Seleziona A1
Dai-->Filtro-->Filtro automatico
Esegui un filtro
poi
Seleziona tutto(in pratica togli il filtro)
Stoppa il registratore.
Vai a vedere il codice.
Più o meno:
Sub Macro1()
'
' Macro1 Macro
' Macro registrata il 28/11/2007 da Mauro Gamberini
'
'
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="valoreSelezionato"
Selection.AutoFilter Field:=1
End Sub
Modificala così:
Public Sub mFiltra()
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=Range("D1").Value
End Sub
Dove per me Range D1 è dove andrò a mettere il valore da filtrare
Crea una seconda macro(puoi copia/incollare questa):
Public Sub mTogliFiltro()
Range("A1").Select
Selection.AutoFilter Field:=1
End Sub
Per agganciare le due macro ai pulsanti di scelta rapida:
Strumenti-->Macro-->Macro
Seleziona la macro
Pulsante: Opzioni
Inserisci la lettera(es. a)
Ok
Ripeti per l'altra macro
(qui metterà CTRL + q)
Ok
Inserisci il valore da ricercare in D1
CTRL+a
CTRL+q
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
una domanda, e se le colonne dove devo effettuare la ricerca sono 3?
la colonna A, la colonna E, e la colonna F.
grazie 1000
@lessia
On 28 Nov, 13:50, "Mauro Gamberini"
Prova con queste 2 macro:
Public Sub mNascondiRighe()
Dim lngUltimaRiga As Long
Dim lngRiga As Long
Dim lngColonna As Long
With Worksheets("Foglio1")
lngUltimaRiga = .Range("A" & Rows.Count).End(xlUp).Row
For lngRiga = 2 To lngUltimaRiga
For lngColonna = 1 To 3
If .Cells(lngRiga, lngColonna).Value = .Range("F1").Value
Then
.Rows(lngRiga).EntireRow.Hidden = True
Exit For
End If
Next
Next
End With
End Sub
Public Sub mMostraRighe()
Dim lngUltimaRiga As Long
With Worksheets("Foglio1")
lngUltimaRiga = .Range("A" & Rows.Count).End(xlDown).Row
.Rows(1 & ":" & lngUltimaRiga).EntireRow.Hidden = False
End With
End Sub
La cella dove inserire il dato da cercare è F1.
ho provato il codice che mi hai suggerito.
Però quando inserisco il codice da ricercare, le righe con il codice
interessato me le nasconde, invece di visualizzarle e nascondere le
altre senza il codice.
Altra cosa, la ricerca può essere effettuata inserendo solo una parte
del codice presente in una cella?
ovvero devo ricercare il seguente codice alfanumerico: A902374
mi deve visualizzare le righe, dove in una cella è presente anche la
seguente dicitura A902374 - COLLANA.
come posso fare?
grazie infinite..
@lessia
On 28 Nov, 16:13, "Mauro Gamberini"
Opsss.......
Altra cosa, la ricerca può essere effettuata inserendo solo una parte
del codice presente in una cella?
ovvero devo ricercare il seguente codice alfanumerico: A902374
mi deve visualizzare le righe, dove in una cella è presente anche la
seguente dicitura A902374 - COLLANA
*************************************************
Per ogni dato ci vorrebbe una colonna specifica.
Una per il codice ed una per la sua descrizione.
Comunque prova:
Public Sub mNascondiRighe()
Dim lngUltimaRiga As Long
Dim lngRiga As Long
Dim lngColonna As Long
Dim bln As Boolean
Dim s As String
Dim lng As Long
With Worksheets("Foglio1")
lngUltimaRiga = .Range("A" & Rows.Count).End(xlUp).Row
For lngRiga = 2 To lngUltimaRiga
bln = False
For lngColonna = 1 To 3
s = .Cells(lngRiga, lngColonna).Value
lng = InStr(1, s, " ")
If lng > 0 Then lng = lng - 1
If s = .Range("F1").Value Or _
Mid(s, 1, lng) = _
.Range("F1").Value Then
bln = True
End If
Next
If bln = False Then
.Rows(lngRiga).EntireRow.Hidden = True
End If
Next
End With
End Sub
--
però la ricerca di una parte del testo non funziona...
Se io inserisco nella cella per la ricerca A9045642
e nella colonna A in una riga è presente la dicitura A9045642
- Collana xyz - aksdasd
non mi viene visualizzata quando imposto la ricerca!
grazie
@lessia
On 29 Nov, 09:56, "Mauro Gamberini"
A me funziona.
Controlla passo passo quello
che ti ho proposto.
aoltre al codice che mi hai dato tu (che effettua la ricerca nella
colonna A) ho aggiunto e modificato il codice per effettuare la
ricerca nella colonna E:
Public Sub mNascondiRighe1()
Dim lngUltimaRiga As Long
Dim lngRiga As Long
Dim lngColonna As Long
Dim bln As Boolean
Dim s As String
Dim lng As Long
With Worksheets("Ubicazioni in RdF")
lngUltimaRiga = .Range("E" & Rows.Count).End(xlUp).Row
For lngRiga = 7 To lngUltimaRiga
bln = False
For lngColonna = 1 To 3
s = .Cells(lngRiga, lngColonna).Value
lng = InStr(1, s, " ")
If lng > 0 Then lng = lng - 1
If s = .Range("C4").Value Or _
Mid(s, 1, lng) = _
.Range("C4").Value Then
bln = True
End If
Next
If bln = False Then
.Rows(lngRiga).EntireRow.Hidden = True
End If
Next
End With
End Sub
Public Sub mMostraRighe1()
Dim lngUltimaRiga As Long
With Worksheets("Ubicazioni in RdF")
lngUltimaRiga = .Range("E" & Rows.Count).End(xlDown).Row
.Rows(1 & ":" & lngUltimaRiga).EntireRow.Hidden = False
End With
End Sub
Quando imposto la ricerca sulla cella C4, e avvio la macro... mi
nasconde tutte le righe! dove sbaglio?
grazie
@lessia
On 29 Nov, 14:15, "Mauro Gamberini"
Ehmmm...., poca dimestichezza con le macro, vero?
La mia macro esegue la ricerca da A1 a Cn,
dove n è l'ultima riga trovata in A.
Se le colonne sono 5(A, B, C, D, E) modifica
For lngColonna = 1 To 3
in
For lngColonna = 1 To 5
Se(se) le tue colonne sono non contigue,
(es. Colonne A e E)cambiamo la macro.
Se(se) le colonne di ricerca sono contigue,
C4 si trova all'interno del filtro che andrai ad effettuare.
Qualcosa forse mi sfugge su come è strutturato il tuo foglio.
@lessia
On 30 Nov, 14:14, "Mauro Gamberini"
Bene 8-)
Buon fine settimana anche a te.
--
---------------------------
Mauro Gamberini(particolarmente gentile questo venerdě...)
http://www.riolab.org/