interrompere un for..next dopo una determinata condizione

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
shadi1978
00martedì 7 marzo 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
locatevaresino
00martedì 7 marzo 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


Marius44
00martedì 7 marzo 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
shadi1978
00martedì 7 marzo 2017 11:59
ahahah.... [SM=x423037]

grazie mille, perdersi in un bicchier d'acqua
shadi1978
00martedì 7 marzo 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

Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 06:19.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com