Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel]Aggiungere progressivi mancanti

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel]Aggiungere progressivi mancanti

Postdi SebNan » 05/11/14 09:40

Ciao a tutti,
ho un problema con dei numeri progressivi... Mi spiego meglio, ho un file excel con n righe ed n colonne dove nella cella "I3" c'è il primo progressivo numero 5343901 e nella cella "J3" ho l'ultimo progressivo 5343912, Avrei bisogno di un ciclo che nella cella "L3" mi dia tutti i numeri progressivi dal primo all'ultimo, separati da virgola, completo dei numeri intermedi. Il loop deve continuare finché non trova le celle vuote.

Spero di essere stato chiaro e che qualcuno possa darmi suggerimenti in merito.

Buna giornata a tutti
SebNan
Utente Junior
 
Post: 28
Iscritto il: 07/12/12 14:32

Sponsor
 

Re: [Excel]Aggiungere progressivi mancanti

Postdi Anthony47 » 05/11/14 15:13

Il loop deve continuare finché non trova le celle vuote.
La richiesta e' di avere in L3 in numeri a partire da quanto scritto in I3 e fino a quanto scritto in J3, quindi di quali cele vuote parli?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]Aggiungere progressivi mancanti

Postdi SebNan » 05/11/14 15:37

Le celle vuote sono riferite alla righe vuote, cioè finché le celle "In" e "Jn" contengono dei valori il loop gira quando arriverà alla riga n che sara vuota dovrà fermarsi. Scusa se non sono stato molto chiaro!!
SebNan
Utente Junior
 
Post: 28
Iscritto il: 07/12/12 14:32

Re: [Excel]Aggiungere progressivi mancanti

Postdi Anthony47 » 06/11/14 00:40

Prova con questa macro:
Codice: Seleziona tutto
Sub sebn()
Dim LastI As Long, I As Long, J As Long
'
LastI = Range("I3").End(xlDown).Row
For I = 3 To LastI
    If IsNumeric(Cells(I, "I")) And IsNumeric(Cells(I, "J")) Then
        mymess = "": DoEvents
        For J = Cells(I, "I") To Cells(I, "J")
        DoEvents
            mymess = mymess & J & "; "
        Next J
        If Len(mymess) > 3 Then Cells(I, "L") = Left(mymess, Len(mymess) - 2)
    End If
Next I
End Sub


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]Aggiungere progressivi mancanti

Postdi SebNan » 18/11/14 16:10

Ciao Anthony,
scusa se ti rispondo solo ora ha sono stato proprio indaffaratissimo.. Comunque lo script FUNZIONA PERFETTAMENTE!!!!!

Grazie 1000 e a presto!

Seb
SebNan
Utente Junior
 
Post: 28
Iscritto il: 07/12/12 14:32

Re: [Excel]Aggiungere progressivi mancanti

Postdi SebNan » 18/11/14 17:37

Ciao avrei bisogno di una delucidazione, lo script funziona per valori iniziali come 505004801 e finali 505004804, se invece il valore iniziale è 921210505004801 ed il finale 921210505004804 mi da Errore di run-time "6" : overflow nella parte di codice
For J = Cells(I, "S") To Cells(I, "T")
come mai?? ho provato ad impostare la variabile J come double ma così facendo non mi restituisce un valore veritiero.

Grazie
SebNan
Utente Junior
 
Post: 28
Iscritto il: 07/12/12 14:32

Re: [Excel]Aggiungere progressivi mancanti

Postdi Gigi_ » 18/11/14 20:00

Ciao.
Variant?
Ciao.
Gigi_
win 7 + office 2003
Avatar utente
Gigi_
Utente Senior
 
Post: 340
Iscritto il: 14/11/09 21:51

Re: [Excel]Aggiungere progressivi mancanti

Postdi SebNan » 19/11/14 11:57

Ciao, inserendo variant, con il primo num 921210505004801 e l'ultimo 921210505004804 mi restituisce il risultato 9,21210505004801E+58, invece di 921210505004801,921210505004802,921210505004803,921210505004804. potrebbe trattarsi di un problema di excel che non riesce a riprodurre tale sequenza nella cella?? Ho provato con formato numero e testo ma il risultato non cambia.
Grazie
SebNan
Utente Junior
 
Post: 28
Iscritto il: 07/12/12 14:32

Re: [Excel]Aggiungere progressivi mancanti

Postdi Anthony47 » 19/11/14 13:06

In excel la massima precisione ottenibile e’ di 15 digit; Long e’ un data type che si ferma a 10 digit; quindi dichiarando J as Double e usando 921210505004801 / 921210505004804 (i valori che hai citato) il risultato a me viene ancora buono.

Aggiungendo 1 ulteriore digit andra’ in crisi gia’ l’ input in I3, e a cascata i calcoli della macro.
Nella situazione che descrivi, cioe' con lunghezze potenzialmente superiori a 15 digit, suggerisco:
-introdurre i dati in col I e J sotto forma di stringa
-usare una nuova macro che spezzi questa stringa in una parte inferiore di N cifre, che sara’ usato per il ciclo For J /Next J, e una parte superiore che sara’ semplicemente concatenata col risultato del ciclo.
N variera’ da 5 a 10, e corrispondera’ alla prima cifra inferiore a 9 che sara’ trovata scorrendo il numero in J3 da destra verso sinistra e partendo dal quartultimo carattere.
La nuova macro:
Codice: Seleziona tutto
Sub sebn2()
Dim LastI As Long, I As Long, J As Long, myLow As Long, myUp As String, myLC As Long
'
myLC = 3
'
LastI = Range("I3").End(xlDown).Row
For I = 3 To LastI
    If IsNumeric(CDbl(Cells(I, "I"))) And IsNumeric(CDbl(Cells(I, "J"))) Then
        For J = Len(Cells(I, "I")) - 3 To 1 Step -1
            If Mid(Cells(I, "I"), J) < "9" Then myLC = Len(Cells(I, "I")) - J + 1: Exit For
        Next J
        mymess = "": myUp = "": DoEvents
        myLow = CLng(Right(Cells(I, "I"), myLC))
        If Len(CStr(Cells(I, "I"))) > myLC Then myUp = Left(CStr(Cells(I, "I")), Len(CStr(Cells(I, "I"))) - myLC)
        If CLng(Right(Cells(I, "J"), myLC)) < myLow Then mytop = (CLng(Right(Cells(I, "J"), myLC)) + 100000) Else mytop = CLng(Right(Cells(I, "J"), myLC))
        For J = myLow To mytop
        DoEvents
            If myUp = "" Then
                mymess = mymess & J & "; "
            Else
                mymess = mymess & myUp & Format(J, String(myLC, "0")) & "; "
            End If
        Next J
        If Len(mymess) > 3 Then Cells(I, "L") = Left(mymess, Len(mymess) - 2)
    End If
Next I
End Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel]Aggiungere progressivi mancanti":


Chi c’è in linea

Visitano il forum: wallace&gromit e 13 ospiti