PDA

View Full Version : Ciclo per tabella in excel


CIUFFO
03-03-2003, 09:40
Allego un foglio di excel (estrazioni.zip) che riporta una tabella delle estrazioni del superenalotto, a fianco della tabella c'è la stessa tabella che è il risultato di ciò che vorrei ottenere dal ciclo (che non riesco a fare).
In sostanza devo togliere i numeri usciti nell'ultima estazione dalle estrazioni precedenti fino a quando rimane solo un numero (cella P96).
Ciao a tutti

CIUFFO
03-03-2003, 09:50
non riesco ad inserire l'allegato (messaggio del forum: Unable to update Posts Table), lo inserisco appena il forum lo permetterà.
Comunque credo il mio primo post sia sufficentemente esauriente.

CIUFFO
03-03-2003, 18:19
Originally posted by "CIUFFO"

Allego un foglio di excel (estrazioni.zip) che riporta una tabella delle estrazioni del superenalotto, a fianco della tabella c'è la stessa tabella che è il risultato di ciò che vorrei ottenere dal ciclo (che non riesco a fare).
In sostanza devo togliere i numeri usciti nell'ultima estazione dalle estrazioni precedenti fino a quando rimane solo un numero (cella P96).
Ciao a tutti

CIUFFO
03-03-2003, 18:50
A tuttoggi non riesco ad inserire l'allegato.

CIUFFO
04-03-2003, 12:10
Originally posted by "CIUFFO"

Allego un foglio di excel (estrazioni.zip) che riporta una tabella delle estrazioni del superenalotto, a fianco della tabella c'è la stessa tabella che è il risultato di ciò che vorrei ottenere dal ciclo (che non riesco a fare).
In sostanza devo togliere i numeri usciti nell'ultima estazione dalle estrazioni precedenti fino a quando rimane solo un numero (cella P96).
Ciao a tutti

CIUFFO
05-03-2003, 12:33
Originally posted by "CIUFFO"

Allego un foglio di excel (estrazioni.zip) che riporta una tabella delle estrazioni del superenalotto, a fianco della tabella c'è la stessa tabella che è il risultato di ciò che vorrei ottenere dal ciclo (che non riesco a fare).
In sostanza devo togliere i numeri usciti nell'ultima estazione dalle estrazioni precedenti fino a quando rimane solo un numero (cella P96).
Ciao a tutti

Ecco la tabella che non riuscivo ad allegare:

a2000
05-03-2003, 14:31
Ti può andare bene così ?

Si può fare anche più istantaneo, con la riga a destra o a sinistra, doppio carburatore e controscappellamento :p

Ciao :)

CIUFFO
05-03-2003, 19:12
Io ho pensato di fare così (vedi allegato), anche se la tua soluzione risulta più veloce in esecuzione (non capisco perchè).
Ti ringrazio molto ma mi trovo meglio facendo tutto da VB, senza ricorrere a moduli con funzioni che richiedono variabili dal foglio...
Potresti dare un'occhiata al mio code e vedere se è possibile fare in modo che il primo numero trovato venga evidenziato invece che cancellato insieme agli altri ?
Lo scopo è quello di eliminare i numeri estratti nell'ultima estrazione dalle precedenti ma vorrei evidenziare la prima occorrenza degli stessi.
Cioè se il primo estratto dell'ultima estrazione è l'8 vorrei evidenziare il primo trovato nelle estrazioni precedenti e cancellare gli altri.
Ciao e grazie

a2000
05-03-2003, 19:27
A' CIUFFO, schiusa né, non te la prendere, ma chi ti ha dato la patente; ossia ma chi ti ha insegnato a programmare ! :eek:
Ma quanto tempo ci mette ! :(

Comunque non ti preoccupare, se ti piace tutto da VB si fa tutto con un decimo (1/10) delle tue righe di codice e con un decimillesimo (1/10000) del tuo tempo di calcolo :cool:

Adesso però devo dare da mangiare ai pupi. :p
Ti mando tutto dopo cena.

Ciao e studia ! :p

CIUFFO
06-03-2003, 09:35
Scusa la mia ignoranza, faccio il tabaccaio e riguardo il VB sono autodidatta da circa un anno.
Pian piano e sopratutto con i consigli di voi tutti cerco di migliorarmi.
Purtroppo non ho moltissimo tempo
Aspetto la tua risposta e grazie ancora.

a2000
06-03-2003, 10:09
devi scusare tu la mia indelicatezza :(

comunque l'ho appena provato sul PC che ho sottomano ora (un PIII 600MHz mi dicono (?)) e la tua tabella viene compilata (tutta da VB, 10 righe di codice) in meno di un centesimo di secondo (0.008 secondi) :)

Ti mando tutto da casa stasera.

Ciao

P.S.
Comunque scambierei volentieri la mia relativa "sapienza" di VB con i tuoi assoluti guadagni della tabaccheria ! :p :p

a2000
07-03-2003, 09:45
Ecco il tuo filtro tutto da VBA.
Fammi sapere.

Ciao :)

CIUFFO
07-03-2003, 12:46
Grazie mille, il tuo codice funzia benissimo.
Volevo però riformulare la mia richiesta perchè forse non mi sono spiegato bene.
Fermo restando che il il tuo codice va bene, cioè cancella i numeri usciti dalle estrazioni precedenti o meglio scrive i numeri se non sono già usciti, io vorrei evidenziare i primi usciti (partendo dall'ultima estrazione) che ora vengono cancellati.
Cioè se con l'ultima estrazione esce ad esempio l'8 e nelle estrazioni precedenti è presente 5 volte, vorrei che venissero cancellati i quattro più vecchi evidenziando quello che è più vicino all'ultima estrazione, e così per gli altri cinque numeri dell'ultima estrazione.
In questo modo ottengo una tabella uguale a quella che già abbiamo ma con la differenza che ho evidenziato gli ultimi numeri eliminati .
Spero di essere stato abbastanza chiaro.
Ciao e grazie ancora.

CIUFFO
07-03-2003, 16:33
Non riesco a capire i due punti (":"), dove ne parla la guida in linea di vb per excel?
Sub CIUFFO()
Dim OK(1 To 90) As Boolean

v1 = Range("O2:T128"): II = UBound(v1, 1): JJ = UBound(v1, 2)
ReDim v2(1 To II, 1 To JJ)

NOK = 0
For i = 1 To II: For j = 1 To JJ
If Not OK(v1(i, j)) Then
NOK = NOK + 1
OK(v1(i, j)) = True
v2(i, j) = v1(i, j)
End If
Next j
If NOK >= 90 Then Exit For
Next i

Range("V2:AA128") = v2


End Sub

CIUFFO
07-03-2003, 18:07
Trovato nella giuda di vb5
Lo stesso codice si scrive in maniera più "leggibile" così:
Sub CIUFFO()

Dim OK(1 To 90) As Boolean

v1 = Range("O2:T128")
II = UBound(v1, 1)
JJ = UBound(v1, 2)

ReDim v2(1 To II, 1 To JJ)

NOK = 0
For i = 1 To II: For j = 1 To JJ

If Not OK(v1(i, j)) Then
NOK = NOK + 1
OK(v1(i, j)) = True
v2(i, j) = v1(i, j)
End If

Next j
If NOK >= 90 Then Exit For
Next i

Range("V2:AA128") = v2

End Sub

CIUFFO
07-03-2003, 18:13
Non tenere conto dei due miei post che precedono questo perchè ti ho fatto una domanda alla quale ho già trovato la risposta.
Il mio quesito è questo:
Originally posted by "CIUFFO"

Grazie mille, il tuo codice funzia benissimo.
Volevo però riformulare la mia richiesta perchè forse non mi sono spiegato bene.
Fermo restando che il il tuo codice va bene, cioè cancella i numeri usciti dalle estrazioni precedenti o meglio scrive i numeri se non sono già usciti, io vorrei evidenziare i primi usciti (partendo dall'ultima estrazione) che ora vengono cancellati.
Cioè se con l'ultima estrazione esce ad esempio l'8 e nelle estrazioni precedenti è presente 5 volte, vorrei che venissero cancellati i quattro più vecchi evidenziando quello che è più vicino all'ultima estrazione, e così per gli altri cinque numeri dell'ultima estrazione.
In questo modo ottengo una tabella uguale a quella che già abbiamo ma con la differenza che ho evidenziato gli ultimi numeri eliminati .
Spero di essere stato abbastanza chiaro.
Ciao e grazie ancora.

a2000
08-03-2003, 00:03
Ho voluto generalizzare un po' permettendoti di evidenziare con colori diversi a piacere il diverso grado di occorrenza. :)


P.S.
Per la leggibilità: dipende da chi legge. :)
Comunque istruzioni contestuali e ausiliarie (p.es. calcolo dimensioni di una matrice dinamica) possono seguire la principale sulla stessa riga.

E' una questione del cosiddetto "stile" di programmazione che è importante soprattutto sia coerente per tutto il codice.
Se poi vuoi fare lo "sborone" puoi anche scrivere una istruzione per riga o anche andare a capo ogni lettera come Socmaker. :cool:

CIUFFO
08-03-2003, 12:33
Lo scopo è evidenziare i numeri usciti dell'ultima estrazione.
Io ho fatto così, però ho dovuto fare due tabelle.
Vedi l'allegato.
Ciao e grazie.