| | 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 = 11851260vengono 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 |
|
|