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

interrompere un for..next dopo una determinata condizione

Ultimo Aggiornamento: 07/03/2017 12:02
Post: 115
Registrato il: 09/04/2015
Età: 45
Utente Junior
2013
OFFLINE
07/03/2017 11:21

Ciao a tutti,

premetto non chiedetemi un file da esempio, non lo ho. Questa domanda è solo un'idea che mi è venuta in mente per alleggerire un codice. Più che altro volevo capire se è fattibile oppure no...
Cerco di spiegare la mia idea il più dettagliatamente possibile.

Col.A contiene n righe di date (gg/mm/yyyy)

Ho il seguente ciclo, che in base ad un mese prescelto, mi farà determinate operazioni, il problema è che il ciclo controlla tutte le righe anche se magari quelle relative al mese prescelto potrebbero essere poche:

for x=n to 1 step-1
MESE = Month(DATA)
...
next

Col.A potrebbe essere di qs tipo per fare un esempio il più chiaro possibile
Col. A
riga1 gg/1/yy
riga2 gg/1/yy
riga3 gg/1/yy
....
riga66 gg/3/yy
riga67 gg/3/yy
riga68 gg/3/yy
....
riga111 gg/7/yy
riga112 gg/7/yy
....
riga199 gg/7/yy
riga200 gg/7/yy
....
riga984 gg/12/yy
riga985 gg/12/yy
riga986 gg/12/yy

e così via

La mia idea constiste in questo:
Dato che il mese prescelto non sarebbe QUASI MAI (dico quasi xk saltuariamente potrebbe essere così) l'ultimo (nell'esempio sopra gg/12/yy), ma sempre uno dei mesi interni (gg/7/yy o gg/10/yy o ecc...); per esempio prendo il mese 7:

il ciclo for mi farà le operazioni da x=200 a x=111, poi ciclerà a vuoto fino a x=1;

quello che volevo sapere, c'è un modo per interrompere il ciclo for (per es. con Exit For) alla prima riga x, dopo l'intervallo del mese prescelto, nell'esempio fatto dovrebbe uscire dal ciclo alla riga 110.

Mi auguro di essermi riuscito a spiegare...

Grazie
Post: 1.967
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
07/03/2017 11:50

ciao

ammettiamo di avere il tuo meseX di ricerca e questi sia = 7

il tuo ciclo for x

for x=n to 1 step-1
MESE = Month(DATA) ' penso che qui sia riferito al campo dove tu ai la data
if MESE < mesex then exit for
...
next


Ciao da locate
excel 2007 / 13
Post: 346
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
07/03/2017 11:55

Ciao
premesso che un ciclo si può sempre interrompere inserendo una condizione, mi sembra quasi inutile quello che vorresti fare e ti spiego perché.

Ammettiamo che le tue date siano in ordine (crescente o decrescente ha poca importanza) quindi diciamo dal mese 1 al mese 12 o viceversa e tu vuoi i dati relativi al mese di giugno (6).
Col ciclo spazzoli sempre da 1 fino a 5 a vuoto, poi trovi i tuoi dati, poi spazzoli a vuoto fino a 12.
Quanto ha impiegato Excel? A meno che non si tratti di molte righe, ma veramente moooooolte, solo qualche decimo di secondo.
Attento, ho detto prima se le date sono in ordine. E se non lo fossero? E’ giusto che Excel scorra l’intera lista per trovare il mese che ti interessa.

Io lascerei tutto così.

Ciao,
Mario
Post: 115
Registrato il: 09/04/2015
Età: 45
Utente Junior
2013
OFFLINE
07/03/2017 11:59

ahahah.... [SM=x423037]

grazie mille, perdersi in un bicchier d'acqua
Post: 116
Registrato il: 09/04/2015
Età: 45
Utente Junior
2013
OFFLINE
07/03/2017 12:02

cambia molto poco in effetti!

ma siccome ho un codice molto lungo ed elaborato, stavo cercando di ottimizzarlo, ma in effetti questa procedura non mi varia assolutamente nulla....

appena testato!

grazie

Vota:
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 22:57. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com