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

MACRO-ELIMINARE RIGHE IN MODO SELETTIVO

Ultimo Aggiornamento: 28/10/2016 18:45
Post: 1
Registrato il: 20/10/2016
Città: MILANO
Età: 37
Utente Junior
Excel 2016
OFFLINE
20/10/2016 18:58

Buonasera,
ho una tabella molto lunga in cui periodicamente ho una serie di 12 righe in cui le celle della colonna G assumono valore 800.

Come è possibile, tramite una MACRO, tenere solo la 6a riga di ogni serie da 12 ed eliminare tutte le rimanenti righe?

NB: ho appurato che tra ogni serie da 12 ci sono 32 righe e la prima serie da 12 parte in corrispondenza della 1950a riga.

Grazie dell'attenzione, è una cosa importante!

Buona serata a tutti!
Post: 882
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
21/10/2016 07:55

ciao
allega un file con dati inventati
grazie
Post: 1
Registrato il: 20/10/2016
Città: MILANO
Età: 37
Utente Junior
Excel 2016
OFFLINE
21/10/2016 16:39

MACRO-ELIMINARE RIGHE IN MODO SELETTIVO
Ecco qui in formato .csv caricato su WeTransfer https://we.tl/nFEfBngz2r
In questo caso la prima serie da 12 inizia alla riga 5493.
Grazie per l'attenzione Federico!

Buona serata.
Post: 873
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
21/10/2016 16:51

Ciao
alcune serie sono composte da 11 elementi=800, altre serire da 10 elementi=800, quindi il tuo 12 non sembra corretto.
Inoltre non è vero che tra le serie ci sono 32 righe, a volte sono 30, altre 29, altre 31 ecc.

Ciò premesso, vale sempre quanto da te richiesto cioè mantenere la 6^ riga delle serie da 800 eliminando quelle superiori ed inferiori a prescindere da quante sono?

saluti
Domenico
Win 10 - Excel 2016
Post: 2
Registrato il: 20/10/2016
Città: MILANO
Età: 37
Utente Junior
Excel 2016
OFFLINE
21/10/2016 17:02

MACRO-ELIMINARE RIGHE IN MODO SELETTIVO
Vero, alcune serie non sono da 12 e la distanza tra le serie non sempre è 32 righe, ma ti confermo che vale sempre e comunque l'obiettivo di tenere le righe del 6° valore 800 a prescindere dalle suddette variazioni, eliminando quindi tutto il resto. Proprio per questa ragione non l'avevo specificato in precedenza, mi scuso se ha provocato confusione.

Grazie anche a te Dodo.

Post: 874
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
21/10/2016 18:09

Ciao
è sempre pericoloso eliminare righe partendo dall'alto anzichè dal basso. Purtroppo nel tuo caso bisogna per forza partire dall'inizio delle serie "800" in quanto non si ha la certezza di quante celle contengano tale valore.

Ciò premesso, questo è il codice basato sul tuo esempio e non serve ricordarti di controllare e provare su un file-copia oppure di non salvare prima di averne certezza.

saluti

Sub Preserve_6()
ur = Range("G" & Rows.Count).End(xlUp).Row
With Range("G1:G" & ur)
Set a = .Find(800, after:=Cells(1, 7), searchdirection:=xlPrevious)
If a Is Nothing Then Exit Sub
LrSet = a.Address
End With
   
ripeti:
With Range(LrSet & ":G1")
    Set a = .Find(800, after:=Cells(1, 7), searchdirection:=xlPrevious)
    If a Is Nothing Then Exit Sub
    LrSet = a.Address
    LrRow = a.Row
End With
   
With Range(LrSet & ":G1")
    Set a = .Find(400, after:=Cells(1, 7), searchdirection:=xlPrevious)
    If a Is Nothing Then Exit Sub
    FrRow = a.Row + 1
    FrSet = a.Address
End With
If LrRow = FrRow Then Exit Sub
k = 0
For i = FrRow To LrRow
    If Cells(i, 7) <> 800 Then Exit For
    k = k + 1
    If k <> 6 Then
        Rows(i).EntireRow.Delete 
        i = i - 1
    End If
Next
    LrSet = FrSet
    GoTo ripeti
End Sub



NOTA: se la macro viene eseguita una seconda volta non dovrebbe creare problemi...controlla.

EDIT: se al posto di:
Rows(i).EntireRow.Delete 

ci metti
Cells(i, 1).EntireRow.Interior.Color = 11851260


vengono colorate le righe che verrebbero cancellate.

[Modificato da dodo47 21/10/2016 18:21]
Domenico
Win 10 - Excel 2016
Post: 3
Registrato il: 20/10/2016
Città: MILANO
Età: 37
Utente Junior
Excel 2016
OFFLINE
21/10/2016 18:24

MACRO-ELIMINARE RIGHE IN MODO SELETTIVO
Grazie mille Dodo, nelle prossime ore proverò e comunicherò qualsiasi esito.
Buona serata!
Post: 4
Registrato il: 20/10/2016
Città: MILANO
Età: 37
Utente Junior
Excel 2016
OFFLINE
28/10/2016 18:45

Grazie di nuovo Dodo, ho risolto e funziona tutto ora.
Buona serata.

Roberto
Vota: 15MediaObject5,0048 4
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 07:57. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com