Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Cancellare la riga se.....(Tieni il valore)

Ultimo Aggiornamento: 18/05/2019 12:50
Post: 143
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
07/05/2019 19:46

Buona sera nel foglio 1 devo cancellare delle righe mi
servirebbe una Sub per esempio con Msg = InputBox("Digitare almeno un numero da 1 a 90) in questo caso ho scelto
il 44, una volta digitato si dovrebbe far partire la ricerca e se nelle colonne C,D,E,f,G non è presente il valore scelto in questo caso il 44,la macro dovrebbe cancellare tutte le altre righe del foglio. Nel mio foglio1 dovrebbero rimanere soltanto le righe (1,2,7).Grazie Matteo
Post: 798
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
07/05/2019 23:33

Puoi provare con una macro così come base di partenza:
Option Explicit

Sub EliminaRighe()
    
    Dim num As Integer
    Dim rng As Range
    Dim riga As Long
    
    On Error GoTo fine                                      'esci se non rispondo
    num = InputBox("Digitare un numero da 1 a 90")
    If Not num >= 1 Or Not num <= 90 Then Exit Sub          'esci se immesso numero non previsto
    Application.ScreenUpdating = False
    With Worksheets("Foglio1")
        Set rng = .Range("A1:G" & .Cells(Rows.Count, 1).End(xlUp).Row)  'rilevo l'area da gestire
        For riga = rng.Rows.Count To 1 Step -1                          'ciclo tutte le righe
            'verifico se c'è il numero nella riga
            If Not Application.WorksheetFunction.CountIf(.Range("C" & riga & ":G" & riga), num) > 0 Then
                rng.Rows(riga).EntireRow.Delete                         'altrimenti elimino l'intera riga
            End If
        Next riga
    End With
    Application.ScreenUpdating = True
fine:
    
End Sub
[Modificato da rollis13 07/05/2019 23:33]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 3.368
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
08/05/2019 07:08

Buona giornata, Matteo;
consentimi un saluto a @rollis13.

Dopo aver preso buona nota della soluzione proposta da Rollis, mi chiedevo se, invece di cancellare le Righe che non contengono il Valore imposto, non sia più conveniente nasconderle.
Il riscontro visivo sarebbe identico ma potresti avere l'opportunità di analizzare più variabili.



Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 143
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
08/05/2019 21:02

Buona sera Rollis13, buona sera Giuseppe, ti ringrazio rollis13 ottima macro perfetta lo già verificata complimenti perfetta,rispondo anche a Giuseppe che lo saluto è un po' che non ci sentiamo ,volevo si nasconderle ma solo è possibile con macro perché io non uso i menù a tendina ripeto con macro la vorrei volentieri, un altra cosa ho
letto solo pochi giorni fà (In questi giorni sto seriamente pensando di raggruppare tutto in due libri ben distinti; non per scopi economici, eventuali quanto improbabili benefici andrebbero sicuramente a qualche ONLUS)io voglio i tuoi due libri , Saluti Matteo.
Post: 799
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
08/05/2019 23:12

Grazie del riscontro positivo 🙂.
Se devi solo nascondere le righe puoi usare quest'altro codice:
'rng.Rows(riga).EntireRow.Delete                         'altrimenti elimino l'intera riga
rng.Rows(riga).EntireRow.Hidden = True                  'altrimenti nascondo l'intera riga
[Modificato da rollis13 08/05/2019 23:13]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 3.369
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
09/05/2019 11:21

Buona giornata, Matteo;
dopo aver preso buona nota della proposta di @rollis13, che saluto, potresti considerare questa soluzione, due Codici VBA:
- Visualizza; visualizza tutti i Record
- Nascondi; visualizza solo i Record che soddisfano la regola imposta

Option Explicit

Sub Visualizza()
    Cells.EntireRow.Hidden = False
        Cells(1, 1).Select
End Sub

Sub Nascondi()
Application.ScreenUpdating = False
Dim NRc As Long, x As Long
Dim Vlr As Byte
Dim Rng As Range

    NRc = Range("A" & Rows.Count).End(xlUp).Row
    Set Rng = Range(Cells(1, 3), Cells(NRc, 7))
        Range(Cells(1, 1), Cells(NRc, 1)).EntireRow.Hidden = True
    Vlr = InputBox("Digitare il numero da valutare compresa tra 1 e 90")
        For x = 1 To NRc
            If Not Application.WorksheetFunction.CountIf(Range("C" & x & ":G" & x), Vlr) = 0 Then Cells(x, 1).EntireRow.Hidden = False
        Next x
Application.ScreenUpdating = True
End Sub

A margine di quanto sopra, ringrazio Rollis per la condizione:

If Not Application.WorksheetFunction.CountIf(.Range("C" & riga & ":G" & riga), num) > 0 Then
                Rng.Rows(riga).EntireRow.Delete                         'altrimenti elimino l'intera riga
            End If

che non conoscevo e ho cercato di adattare al Codice VBA "Nascondi"

@gattodimarmo1980, scrive:

... un altra cosa, ho letto solo pochi giorni fà (In questi giorni sto seriamente pensando di raggruppare tutto in due libri ben distinti; non per scopi economici, eventuali quanto improbabili benefici andrebbero sicuramente a qualche ONLUS)io voglio i tuoi due libri...



Per i libri credo dovrai attendere; per ogni Codice VBA devo documentare una spiegazione chiara ma sintetica, e non è facile.

Ovviamente, se lo ritieni utile e opportuno posso fornirti privatamente il File "Macromag" nel quale sono salvate tutti i Codici VBA che nel tempo ho costruito.



A disposizione.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 144
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
12/05/2019 11:14

Buona Domenica ,ringrazio sia Rollis13 e GiuseppeMN per i codici siete veramente due professionisti complimenti.Per Giuseppe MN ,attendo con ansia i tuoi libri fammi sapere quando verranno pubblicati.Saluti Matteo
Post: 147
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
13/05/2019 22:05

Cancella in base valore colonna J
Buona sera a tutti allego foglio si potrebbe i potrebbe aggiungere un modulo che cancella tutte le righe inserendo per esempio un Msg = InputBox(", Digita il valore da tenere compreso da 1 a 15"digita almeno 4 valori, , "")cancellando così le altre righe?Faccio esempio digitando valore 9 10 le righe da tenere sarebbero la (9,la 10), la (22, la 23), la (34, la 35).Grazie anticipatamente Matteo.La colonna J è basilare .
Post: 3.374
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
15/05/2019 05:21

Buona giornata, Matteo.

@gattodimarmo1980, scrive:



... nel foglio di lavoro in allegato, si potrebbe aggiungere un modulo che cancella tutte le righe inserendo per esempio un Msg = InputBox(", Digita il valore da tenere compreso da 1 a 15"digita almeno 4 valori, , "")cancellando così le altre righe?Faccio esempio digitando valore 9 10 le righe da tenere sarebbero la (9,la 10), la (22, la 23), la (34, la 35). Grazie anticipatamente Matteo. La colonna J è basilare .


Credo che la soluzione più veloce sia "Nascondere le Righe" e non "Cancellare/Eliminare le Righe".

Avrei pensato a due Codici VBA:

Option Explicit
 
Sub Visualizza()
    Cells.EntireRow.Hidden = False
        Cells(1, 1).Select
End Sub
 
Sub Nascondi()
Application.ScreenUpdating = False
Dim NRc As Long, x As Long
Dim Vlr As Byte, y As Byte, Vlx As Byte
Dim Rng As Range
 
    NRc = Range("A" & Rows.Count).End(xlUp).Row
    Set Rng = Range(Cells(1, 3), Cells(NRc, 7))
        Range(Cells(1, 1), Cells(NRc, 1)).EntireRow.Hidden = True
    Vlx = InputBox("Digitare le serie dei numeri da valutare.")
        For y = 1 To Vlx
            Vlr = InputBox("Digitare il numero da valutare compresa tra 1 e 90")
            For x = 1 To NRc
                If Cells(x, 10) = Vlr Then Cells(x, 1).EntireRow.Hidden = False
            Next x
        Next y
Application.ScreenUpdating = True
End Sub

Il Codive VBA "Visualizza" serve per visualizzare tutti i Record precedentemente nascossti; credo cche su questo Codice non ci sia bisogno di spiegazioni.

Il Codice VBA "Nascondi" è più complesso:
InputBox Vlx chiede quanti Valori dovranno essere valutati:
- se i Valori da visualizzare sono 2 (9 e 10), il valore da inserire sarà 2
- se i Valori da visualizzare sono 4 (1, 5, 9 e 10), il valore da inserire sarà 4
A questo punto, verranno proposti in sequenza tanti InputBox Vlr quanti sono quelli definiti precedentemente in InputBox Vlx.

In ogni InputBox andrà inserito il Valore da valutare; nel caso dei Valori 9 e 10, verrà proposto:
- InputBox Vlx; il valore da inserire sarà 2
- Succesivamente, nel primo InputBox Vlr il valore da inserire sarà 9
- Nel secondo InputBox Vlr il valore da inserire sarà 10

Alla fine del Ciclo resteranno visualizzati solo i Record definiti negli InputBox Vlr.

Supponendo di voler visualizzare i Record che in Colonna "J" hanno Valore 1, 5, 9 e 10, il risultato sarà quello proposto nell'immagine in allegato.




Con l'auspicio di aver interpretato correttamente la tua richiesta, rimango a disposizione per eventuali ulteriori chiarimenti.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 148
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
18/05/2019 12:50

Ringrazio ancora una volta il mitico GiuseppeMN. Codice perfetto Grazie buon week end a tutti Matteo.
Vota: 15MediaObject5,00210 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:04. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com