spostaare la cella attiva tra celle nascoste
Hai un problema con Excel?
spostare la cella attiva tra celle nascoste
di dlacascia data: 13/07/2017 15:39:27
ho una tabella filtrata.
La tabella è composta da migliaia di righe di cui, per effetto del filtro, la maggior parte di queste sono nascoste. Io dovrei fare dei calcoli sulle sole righe visibili, se per fare i calcoli mi sposto di una sola cella per volta attraversando anche le celle nascoste, la macro impiega parecchio tempo.
Non c'è modo di spostare la cella attiva soltanto tra le celle visibili in modo da calcolare solo quelle? come in realtà succede quando su una tabella filtrata, si preme la freccia in giù. La cella attiva si sposta sempre di una sola cella per volta ma solo tra quelle visibili.
E' possibile fare la stessa cosa tramite codice?
grazie
di Vecchio Frac data: 13/07/2017 15:44:19
Sì ma non c'è proprio alcun motivo per spostare la cella attiva via codice. Di solito si fanno le operazioni senza mai spostare la ActiveCell, semplicemente perchè è inutile.
di dlacascia data: 14/07/2017 07:44:08
1° esempio più facile:
10 righe devo sommare le quantità di una colonna ma solo quelle visibili
2° esempio
riga per riga, solo per quelle visibili, devo applicare una condizione per poi fare dei calcoli.
for each cella in range()
if cells(cella.row,x)=xxx then
...i calcoli fatti qui vanno fatti solo nel caso in cui questa riga sia visibile
end if
next
questa condizione va verificata solo sulle righe visibili e non su quelle nascoste dal filtro.
inoltre avendo parecchie migliaia di righe, se devo mettere un altro if per verificare la condizione di visibile oppure no, il programma perde parecchio tempo, anche perchè le righe visualizzate dal filtro e di cui ho bisogno di calcolare sono fino al massimo 200 righe, mentre il tutto sono circa 10.000 righe.
Chiaramente se l'unico modo è questo, lo utilizzerò.
saluti
di Vecchio Frac data: 14/07/2017 10:30:01
Excel permette di eseguire un ciclo solo sulle celle visibili di un range.
Esiste un metodo dell'oggetto Range che permette di riferirsi soltanto alle celle visibili di un intervallo (si tratta di "celle speciali"). Ed è pure velocissimo quindi anche su un milione di righe funziona benone.
Scrivi "Range" in finestra immediata, premi F1 per la Guida e cerca tra i membri dell'oggetto Range questo metodo che fa al caso tuo.
Se proprio non riesci... ti rivelerò l'arcano
di patel data: 14/07/2017 11:50:12
confermo che spostare la cella attiva, indipendentemente dalla visibilità, è una cosa inutile anzi dannosa, è una cosa che fanno soltanto i principianti perché la vedono nelle macro registrate.
di dlacascia data: 14/07/2017 12:00:15
For Each cella In Range(Cells(2, 7), Cells(r, 7)).SpecialCells(xlCellTypeVisible)
era questo l'arcano?
in tutti i modi questo funziona perfettamente per quello che dovevo fare, poi se c'è anche qualche altro sistema, ben venga.
intanto grazie
di Vecchio Frac data: 14/07/2017 13:22:03
Bravo dlacascia, sì era questo!
Hai centrato l'obiettivo
di dlacascia data: 14/07/2017 13:23:07
grazie
Vuoi Approfondire?