Condividi:        

nascondere righe in base al contenuto di una cella

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

nascondere righe in base al contenuto di una cella

Postdi erryrox » 18/05/12 14:40

Ciao a tutti di nuovo!

Esiste un modo per nascondere e/o scoprire una riga in base al contenuto di una cella della riga stessa???

grazie
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Sponsor
 

Re: nascondere righe in base al contenuto di una cella

Postdi Zer0Kelvin » 18/05/12 17:33

Ciao.
Che io sappia si può fare solo ricorrendo a VBA.
Per esempio
Codice: Seleziona tutto
With Range("A1")
        If .Value = "Pippo" then .EntireRow.Hidden = True else .EntireRow.Hidden = False
End With

nasconde la riga 1 se la cella A1 contiene la parola Pippo, altrimenti la scopre.
Oppure più sintetico
Codice: Seleziona tutto
Range("A1") .EntireRow.Hidden = Range("A1") <> "Pippo"
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Postdi erryrox » 30/05/12 10:19

questo codice però dovrei applicarlo non solo alla riga 1, ma ad un elenco. Quindi presumo che bisognerebbe inserire un ciclo che scorra tutte le righe. Sapete aiutarmi?? grazie
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: nascondere righe in base al contenuto di una cella

Postdi ricky53 » 30/05/12 12:04

Ciao,
si con un ciclo for/next ed un controllo sul contenuto della i-esima cella risolvi.

Prima di proporti un esempio sul quale lavorare vorrei essere sicuro che non ci siamo altre condizioni che ti occorrono che potrebbero condizionare il codice da proporre.
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: nascondere righe in base al contenuto di una cella

Postdi erryrox » 30/05/12 12:43

grazie ricky per l'interessamento. Comunque non ci sono condizioni particolari. L'unica cosa, se per cosa viene fuori un errore dalla macro, visualizzare un msgbox o uscire dalla macro senza visualizzare la finestra d'errore. Grazie
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: nascondere righe in base al contenuto di una cella

Postdi ricky53 » 30/05/12 13:34

Ciao,
prova questo codice
Codice: Seleziona tutto
Option Explicit
Option Compare Text

Sub Nascondi_Celle()
    Dim UR As Long, I As Long, Nascoste As Long, Messaggio As String, Testo_per_Nascondere As String
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Nascoste = 0
   
    Testo_per_Nascondere = "PIPPO" ' <<----------- QUI devi inserire il contenuto per il quale vuoi nascondere le righe
   
    Cells.EntireRow.Hidden = False
    Application.ScreenUpdating = False
    For I = 2 To UR
        If Sheets("Foglio1").Cells(I, 1).Value = Testo_per_Nascondere Then
            Sheets("Foglio1").Cells(I, 1).EntireRow.Hidden = True
            Nascoste = Nascoste + 1
        End If
    Next I
    Application.ScreenUpdating = True
   
    If Nascoste > 0 Then
        Messaggio = "Sono state nascoste:  " & Nascoste & "  righe"
    Else
        Messaggio = "Non sono state nascoste righe"
    End If
    MsgBox Messaggio
End Sub


Il valore per il quale nascondere le righe lo devi scrivere impostando la variabile "Testo_per_Nascondere "
La macro controlla che il valore sia contenuto nella colonna "A" mediante
Codice: Seleziona tutto
Cells (I , 1)
in caso di colonna diversa sostituisci "1" (1 = Colonna "A", 2 = Colonna "B", ...) con il numero della colonna ove hai il dato che va controllato.

Prova e ... sono QUI
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: nascondere righe in base al contenuto di una cella

Postdi erryrox » 30/05/12 14:44

Perfetto, funziona alla grande.

Per curiosità:
siccome mi serviva anche una macro per riscoprire le righe nascoste, ho usato lo stesso codice sostuendo un "true" con "false" all'interno del ciclo.

grazie!
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: nascondere righe in base al contenuto di una cella

Postdi ricky53 » 30/05/12 22:50

Ciao,
per "riscoprire le celle nascoste (TUTTE in tutto il foglio attivo) utilizza questa istruzione che era già presente nel codice che ti ho inviato
Codice: Seleziona tutto
    Cells.EntireRow.Hidden = 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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: nascondere righe in base al contenuto di una cella

Postdi erryrox » 31/05/12 09:16

esatto ho modificato proprio quel comando. grazie

ciao
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: nascondere righe in base al contenuto di una cella

Postdi valeee1987 » 04/12/12 18:24

ciao anch'io ho un problema simile, anche abbastanza urgente da risolvere!
Devo inserire dei costi dilazionati in 1,2 o 3 anni dunque sto creando un foglio excel in cui se si inserisce il numero di mesi del contratto in una determinata cella C41 (da considerare che questa può variare e può divenire C43,45 etc) e sotto questa cella ho creato una tabella per il primo anno, una per il secondo e una per il 3 con degli elenchi a discesa in modo da poter selezionare il servizio utile in base al cliente.
Vorrei non dover compilare per ogni anno e dunque in tutte e 3 le tabelle i servizi scelti nella prima ed inoltre vorrei che le tabelle inerenti al 2 e 3 anno fossero visibili solo se nella cella C41 ci sia un valore >12 (compare la tabella del 2 anno oltre che del 1 anno), se c'è un valore >24 sono visibili tutte e 3 le tabelle con i servizi uguali alla prima tabella.
Non so se sono stata chiara e se questo si può realizzare.

Spero possiate aiutarmi :( :( :( :( :(
valeee1987
Newbie
 
Post: 1
Iscritto il: 04/12/12 18:13

Re: nascondere righe in base al contenuto di una cella

Postdi ricky53 » 04/12/12 19:54

Ciao,
prima di tutto benvenuta nel nostro forum.

A me il problema sembra diverso.
Forse è meglio che tu inserisca il tuo quesito in una nuova discussione.

Dovresti fornire maggiori dettagli e i riferimenti di righe e colonne su cui i dati operano.
Inoltre
Valeee1987 ha scritto:... se si inserisce il numero di mesi del contratto in una determinata cella C41 (da considerare che questa può variare e può divenire C43,45 etc) e sotto questa cella ho creato una tabella per il primo anno, una per il secondo e una per il 3 con degli elenchi a discesa in modo da poter selezionare il servizio utile in base al cliente.

Non mi è molto chiaro.
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: nascondere righe in base al contenuto di una cella

Postdi Flash30005 » 04/12/12 20:06

Ciao Valeee1987 e benvenuta nel Forum

Si può fare ma occorrono le coordinate delle tabelle (Cella inizio - Cella Fine)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: nascondere righe in base al contenuto di una cella

Postdi cd7019 » 05/12/12 20:39

ciao a tutti,
io ho lo stesso problema però non riesco a risolverlo.
devo cercare un testo (nella cella A1) in una colonna, però non riconosce il testo in una stringa-cella

Codice: Seleziona tutto
Sub TROVA_TXT()
Cells.EntireRow.Hidden = False
NC = Application.WorksheetFunction.CountIf(Range("A2:IV65000"), "*" & Cells(1, 1) & "*")

For I = 2 To 40
    If Cells(I, 4) <> "*" & Cells(1, 1) & "*" Then
        Rows(I).EntireRow.Hidden = True
    Else
        Cells(I, 4).Interior.ColorIndex = 44
    End If
Next I

End Sub

grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: nascondere righe in base al contenuto di una cella

Postdi Anthony47 » 05/12/12 23:02

Prova con
Codice: Seleziona tutto
If Len(Cells(I, 4)) <> Len(Replace(Cells(I, 4), Cells(I, 1), "")) Then  '<< MODIFICATA
Rows(I).EntireRow.Hidden = True
'etc etc

Questa nasconde la riga se in Col D e' presente la stringa posizionata in A1; modifica eventualmente "<>" in "=" per invertire la logica.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: nascondere righe in base al contenuto di una cella

Postdi cd7019 » 06/12/12 15:14

Non mi riconosce il comando replace.


messaggio:

ERRORE DI COMPILAZIONE
Riferimento non valido o non qualificato.

GRAZIE
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: nascondere righe in base al contenuto di una cella

Postdi cd7019 » 06/12/12 16:05

Ho provato un'altra macro, però risulta un pò lenta.
E' possibile inserire il comando nascondi riga nel ciclo DO? così elimino il ciclo FOR NEXT che mi rallenta.

Codice: Seleziona tutto
Sub TROVA_TXT2()
Cells.Interior.ColorIndex = xlNone
Range(Cells(5, 1), Cells(Rows.Count, 10)).EntireRow.Hidden = False
NR = Range("D" & Rows.Count).End(xlUp).Row
With Range("D5:D" & Rows.Count)
    Set C = .Find(Cells(1, 1), LookIn:=xlValues)
    If Not C Is Nothing Then
        Pi = C.Address
        Do
        C.Interior.ColorIndex = 44
            Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Address <> Pi
    End If
End With
For I = 5 To NR
If Cells(I, 4).Interior.ColorIndex <> 44 Then Cells(I, 4).EntireRow.Hidden = True
Next I
End Sub



GRAZIE
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: nascondere righe in base al contenuto di una cella

Postdi Anthony47 » 06/12/12 19:18

Effettivamente in XL97 la funzione Replace non era presente...

Allora il mio suggerimento e' di farlo con un filtro; ad esempio:
Codice: Seleziona tutto
LastD = Cells(65536, 4).End(xlUp).Row
Range("D5:D" & LastD).Interior.ColorIndex = xlNone   '<<<
Range("D4:D" & LastD).AutoFilter field:=1, Criteria1:="=*" & Cells(1, 1) & "*"
Range("D5:D" & LastD).Interior.ColorIndex = 44

Le righe che in colonna D non contengono la stringa impostata in A1 saranno nascoste, le rimanenti avranno il ColorIndex 44.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: nascondere righe in base al contenuto di una cella

Postdi cd7019 » 06/12/12 22:34

Non voglio utilizzare il filtro perchè quando ho molti dati non mi filtra tutti i valori in modo corretto.
Con il ciclo Do LOOP è molto veloce però non riesco a nascondere le righe.

Stò impazzendo...

grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: nascondere righe in base al contenuto di una cella

Postdi Anthony47 » 06/12/12 23:03

Non impazzire, basta provare: il filtro automatico e' limitato quando si tratta di filtrare per "liste valori" (limitato sulle vecchie versioni a 1000 item), non quando si filtra per contenuto.
Se una cosa e' veloce ma non fa quello che ti serve allora e' inutile.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: nascondere righe in base al contenuto di una cella

Postdi Flash30005 » 07/12/12 00:14

Scusate ma state occupando un topic e stravolgendo il quesito
fino al 4 dicembre 2012 si parlava di un certo quesito con risposte delle quali non si è avuto un feedback
ora, secondo me stiamo "incasinando" o mi sbaglio?
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "nascondere righe in base al contenuto di una cella":


Chi c’è in linea

Visitano il forum: Ricky0185 e 49 ospiti