Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cancellare una riga in base al colore di sfondo (di una cella)

108 views
Skip to first unread message

Ammammata

unread,
Jan 19, 2024, 10:58:46 AM1/19/24
to
devo eliminare una serie di righe da un foglio excel, basandomi sul
contenuto di una cella, che dovrebbe essere una data

purtroppo, per motivi "storici", se la data viene cambiata nel corso
del tempo quella nuova viene inserita prima, poi un Alt+Invio per
andare a capo, infine quella vecchia viene formattata barrata

una immagine vale più di mille parole:

https://i.imgur.com/heV8yEm.png

ora non posso più usarla per fare un confronto per cui mi devo
inventare qualcosa: per esempio, colorare lo sfondo della cella (in
giallo) se l'intera riga deve essere eliminata

a questo punto chiedo se è fattibile una routine in VBA, che mi
scansiona tutte le righe, dalla 2 in giù, eliminando quelle in cui la
cella corrispondente nella colonna N è colorata con uno sfondo giallo?

grazie e buon fine settimana

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........

pic omnic

unread,
Jan 19, 2024, 12:00:57 PM1/19/24
to
Public Sub EliminaRigheGialle()
Dim nr As Long
Dim l As Long
With ActiveSheet
nr = .Range("A65536").End(xlUp).Row
For l = nr To 1 Step -1
If .Cells(l, 1).Interior.ColorIndex = 6 Then
.Rows(l).Delete Shift:=xlUp
End If
Next l

.Cells(1, 1).Select
End With
End Sub

pic omnic

unread,
Jan 19, 2024, 12:04:52 PM1/19/24
to
Esamina la col A. Se vuoi controllare la colonn N devi cambiare
.Cells(l, 1).Interior.ColorIndex = 6
con
.Cells(l, 14).Interior.ColorIndex = 6

issdr

unread,
Jan 20, 2024, 6:02:10 AM1/20/24
to
pic omnic wrote:

> Esamina la col A. Se vuoi controllare la colonn N devi cambiare
> .Cells(l, 1).Interior.ColorIndex = 6
> con
> .Cells(l, 14).Interior.ColorIndex = 6

o .Cells(l, "N") 😉

attenzione, il codice include la prima riga, mentre si dovrebbe fermare
alla 2.

anch'io sarei partito dal basso, ma non utilizzando il numero di righe
che vedo andando a fine foglio, perché ad esempio le nuove versioni di
Excel ne hanno _un po'_ di più. .Rows.Count fornisce quel numero,
qualunque esso sia, vedi tu cone utilizzarlo.

potresti utilizzare anche un for each, dopo aver definito il range di
celle della colonna su cui andare a controllare il colore.

ciao

pic omnic

unread,
Jan 20, 2024, 6:06:28 AM1/20/24
to
Si. Concordo. in effetti era una vecchia macro che utilizzavo quando il num di righe del foglio excel non era enorme come oggi.

Ammammata

unread,
Jan 20, 2024, 10:24:55 AM1/20/24
to
Il giorno Sat 20 Jan 2024 12:06:26p, *pic omnic* ha inviato su
microsoft.public.it.office.excel il messaggio news:cd474289-ce1d-4a85-
9d9f-ea26...@googlegroups.com. Vediamo cosa ha scritto:

> Concordo

grazie a entrambi, lunedì metto in pratica

Ammammata

unread,
Jan 22, 2024, 4:13:55 AM1/22/24
to
After serious thinking issdr wrote :
> anch'io sarei partito dal basso, ma non utilizzando il numero di righe
> che vedo andando a fine foglio, perché ad esempio le nuove versioni di
> Excel ne hanno _un po'_ di più. .Rows.Count fornisce quel numero,
> qualunque esso sia, vedi tu cone utilizzarlo.

il numero di righe nei vari fogli che devo snellire difficilmente
raggiunge il 300 per cui metterò un valore X relativamente basso, non
certo 65 mila o un milione

casanmaner

unread,
Jan 22, 2024, 5:00:41 AM1/22/24
to
Perdonate ma anche a partire dall'ultima riga disponibile in base alla
versione di Excel comunque il conteggio inizierebbe dalla prima riga con
la presenza di un valore nella colonna presa in considerazione.

Per intendersi con:

nr = Range("A" & Rows.Count).End(xlUp).Row

se l'ultimo valore si trova in riga 100 nr assumerà valore 100 e non
certo 3milionierotti.


0 new messages