Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel o macro (solita formula)

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

Re: Excel o macro (solita formula)

Postdi Anthony47 » 06/03/13 10:03

Nel file allegato questa mi pare che restituisca il valore che cerchi:
Codice: Seleziona tutto
=SE(E(B1="Spia";B2="");A2-INDICE(A$1:A1;1+MAX(SE(B$1:B1="Spia";"";RIF.RIGA(B$1:B1))));"")
Contr-Maiusc-Enter
A questo punto mi chiedo pero' se la formula che ti diedi qualche giorno fa funzionasse realmente...

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: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 10:11

Nella macro troverai questa riga (trascrive la differenza concorsi)
Codice: Seleziona tutto
Worksheets("Spia_48").Range("E" & RR2).Value = Worksheets("Spia_48").Range("A" & RR2).Value - Conc1

devi solo inserire RR1 nella formula del range "E", così
Codice: Seleziona tutto
Worksheets("Spia_48").Range("E" & RR1).Value = Worksheets("Spia_48").Range("A" & RR2).Value - Conc1


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 10:43

https://dl.dropbox.com/u/18220462/IMMAG ... 202%20.PNG

Ciao Flash, buona giornata.
Il ritardo segnato è giusto ma come vedi da immagine, va spostato in giù di una cella. Inoltre, quando l'evento Spia si ripete più volte marca ritardi che non devono esserci; c'è ne sono moltissimi.

Grazie molte per l'aiuto, ciao

L'ultimo ho sbagliato riga
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Anthony47 » 06/03/13 13:31

Per curiosita' prova anche la formula...
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: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 15:54

Anthony47 ha scritto:Nel file allegato questa mi pare che restituisca il valore che cerchi:
Codice: Seleziona tutto
=SE(E(B1="Spia";B2="");A2-INDICE(A$1:A1;1+MAX(SE(B$1:B1="Spia";"";RIF.RIGA(B$1:B1))));"")
Contr-Maiusc-Enter
A questo punto mi chiedo pero' se la formula che ti diedi qualche giorno fa funzionasse realmente...

Ciao



Ciao Anthony, mi era sfuggito il tuo post. Ora funziona correttamente restituendo il valore richiesto.
Anche prima era funzionante ma quando per strada incontrava la dicitura "spia" ripetuta più volte, svolgeva l'operazione richiesta dall'ultima scritta "Spia", alla cella immediatemente vuota in colonna "B".

OK!!! INFINITE GRAZIE.
ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 16:25

Comunque avevi ragione per quanto riguarda il peso che ha questa formula anche se prima non ha impiegato il tempo che invece ha impiegato con questa correzione (4500 righe in quasi un minuto). Ovviamente dipende molto dal PC.

Probabilmente la macro (se Flash la sistema), sarà più veloce perché meno pesante.

Grazie a voi, ciao

RETTIFICO:

45 secondi per 5.500 righe (tempo più che accettabile).
Ciao
Ultima modifica di Lucio Peruggini su 06/03/13 16:35, modificato 1 volte in totale.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 16:32

Lucio Peruggini ha scritto:Il ritardo segnato è giusto ma come vedi da immagine, va spostato in giù di una cella.

Chi ti capisce è bravo
Rimetti la riga com'era
Codice: Seleziona tutto
Worksheets("Spia_48").Range("E" & RR2).Value = Worksheets("Spia_48").Range("A" & RR2).Value - Conc1

E vedrai che scrive dove richiedi ora debba scrivere
per il resto non noto anomalie
Se per te non è così, elabora il file con la macro,
evidenzia le anomalieùe rispedisci il file
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 17:01

https://dl.dropbox.com/u/18220462/FILE/ ... 29%20.xlsm

Credo che tu non abbia afferrato:

Ho rimesso come prima e scrive sulla riga giusta ma il ritardo è errato!
Quest'ultimo deve partire dalla prima dicitura "Spia" in "B" e non dall'ultima.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 19:35

Ok,
Allora prova questa
Codice: Seleziona tutto
Sub TrRit()
UR = Worksheets("Spia_48").Range("A" & Rows.Count).End(xlUp).Row
Worksheets("Spia_48").Columns(5).ClearContents
Worksheets("Spia_48").[E1].Value = "Rit."
Tr = 0
For RR1 = 2 To UR
    If Worksheets("Spia_48").Range("B" & RR1).Value = "Spia" And Tr = 0 Then
        Conc1 = Worksheets("Spia_48").Range("A" & RR1).Value
        For RR2 = RR1 + 1 To RR1 + 50
            If Worksheets("Spia_48").Range("B" & RR2).Value = "" Then
            Tr = 0
                Worksheets("Spia_48").Range("E" & RR2).Value = Worksheets("Spia_48").Range("A" & RR2).Value - Conc1
                RR1 = RR2
                GoTo SaltaRR2
            End If
        Next RR2
        Tr = 1
SaltaRR2:
    End If
Next RR1
End Sub


Però non mi tornano i conti con i tuoi:
alla riga 67 scrivi ritardo 19 quando a me risulta 27 e
alla riga 94 tu scrivi ritardo 34 mentre a me risulta 45
:roll:
e mi sembra corretto il mio calcolo

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 21:18

Ciao Flash, ora ci siamo!!!
Avevo sbagliato io su quelle due righe e comunque, come immaginavo è molto più veloce e meno pesante delle formule. In un baleno ha fatto il proprio dovere.

Ho inserito nella macro semplicemente la scritta "Spia" e rinominato il foglio. Avrei la necessità d'inserire almeno una decina di fogli ma come fare per far lavorare la macro sui dieci o più fogli contemporaneamente? Ovviamente cambia la "Spia" ma non l'mpostazione.

Ciao e grazie

Se puoi inserire questa opzione te ne sono grato!
Ciao

MI EDITO:
Forse potrei inserire tutto in un unico foglio? A quel punto la macro dovrebbe cambiare secondo il numero spia.
Non so quale delle due soluzioni sia migliore per apportare questa aggiunta.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 22:02

Conviene che splitti su più fogli perché immagino che i dati si riferiscano a ruote diverse
Supponendo che non abbia altri fogli al di fuori di quelli da processare ho modificato così, la macro
Codice: Seleziona tutto
Sub TrRit()
For F = 1 To Worksheets.Count
UR = Worksheets(F).Range("A" & Rows.Count).End(xlUp).Row
Worksheets(F).Columns(5).ClearContents
Worksheets(F).[E1].Value = "Rit."
Tr = 0
For RR1 = 2 To UR
    If Worksheets(F).Range("B" & RR1).Value = "Spia" And Tr = 0 Then
        Conc1 = Worksheets(F).Range("A" & RR1).Value
        For RR2 = RR1 + 1 To RR1 + 50
            If Worksheets(F).Range("B" & RR2).Value = "" Then
            Tr = 0
                Worksheets(F).Range("E" & RR2).Value = Worksheets(F).Range("A" & RR2).Value - Conc1
                RR1 = RR2
                GoTo SaltaRR2
            End If
        Next RR2
        Tr = 1
SaltaRR2:
    End If
Next RR1
Next F
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 22:09

Ci siamo scritti quasi contemporaneamente.
E' vero, le ruote ovviamente sono differenti ma per ognuna d'esse posso avere più numeri Spia. In questa, cosa succede esattamente? All'interno di ogni foglio e quindi ruota, si possono inserire più numeri spie?
--------------------------------------------------------------------------------------------

Ciao Flash, ho provato a inserire le varie Spie (5) l'una sotto l'altra lasciando una riga vuota di intermezzo, funziona magnificamente però si è fermata a poco più di metà percorso:

Su 28.744 righe si è fermata a 15.038. Dipende forse dal range non compreso nella macro? O cos'altro?
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 22:30

La macro conteggia le righe occupate sulla colonna "A" se si è fermata prima della fine controlla che la colonna A sia completa (fino a 28 mila etc)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Anthony47 » 06/03/13 22:31

Sul mio pc, non piu' giovanissimo, modificando la cella A2 le formule su tutte le 5800 righe si ricalcolano in meno di 2 secondi; prova a rebostrappare il pc, e se e' soddisfacente ancora prova la versione con colonna di appoggio (viewtopic.php?f=26&t=98260&start=60#p566655, che mi sembra restituisse il valore corretto senza nessuna modifica); o la macro, di cui conosci pro e contro.

Continuiamo a incrociarci; c' e' un messaggio di Flash sopra.

Ciao a tutti.
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: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 22:54

Flash30005 ha scritto:La macro conteggia le righe occupate sulla colonna "A" se si è fermata prima della fine controlla che la colonna A sia completa (fino a 28 mila etc)

ciao


Come dicevo, fra una spia e l'altra ho dovuto lasciare una riga vuota. Per le prime due va bene, conteggia il tutto egregiamente; su lla terza spia si ferma. La colonna "A" è completa.
Allego il file poichè diverso da quello che hai.
Questo, controlla dopo l'uscita del numero spia (5 più frequenti a tutte), i numeri aggregati che si sfaldano come ambo a Tutte.

https://dl.dropbox.com/u/18220462/FILE/SPIA%20TT%20.zip
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 22:58

Prova così:
Codice: Seleziona tutto
Sub TrRit()
For F = 1 To Worksheets.Count
UR = Worksheets(F).Range("A" & Rows.Count).End(xlUp).Row
Worksheets(F).Columns(5).ClearContents
Worksheets(F).[E1].Value = "Rit."
Tr = 0
For RR1 = 2 To UR
If Worksheets(F).Range("A" & RR2).Value <> "" Then
    If Worksheets(F).Range("B" & RR1).Value = "Spia" And Tr = 0 Then
        Conc1 = Worksheets(F).Range("A" & RR1).Value
        For RR2 = RR1 + 1 To RR1 + 50
            If Worksheets(F).Range("B" & RR2).Value = "" Then
            Tr = 0
                Worksheets(F).Range("E" & RR2).Value = Worksheets(F).Range("A" & RR2).Value - Conc1
                RR1 = RR2
                GoTo SaltaRR2
            End If
        Next RR2
        Tr = 1
SaltaRR2:
    End If
Else
Tr = 0
Endi If
Next RR1
Next F
End Sub
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 06/03/13 23:26

https://dl.dropbox.com/u/18220462/IMMAG ... ura3.1.PNG

Mi da questo errore, come vedi da immagine
Ciao e grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 06/03/13 23:57

Si infatti c'è un errore
sostituisci la precedente con questa
Codice: Seleziona tutto
Sub TrRit2()
For F = 1 To Worksheets.Count
UR = Worksheets(F).Range("A" & Rows.Count).End(xlUp).Row
Worksheets(F).Columns(5).ClearContents
Worksheets(F).[E1].Value = "Rit."
Tr = 0
For RR1 = 2 To UR
Foglio = Worksheets(F).Name
If Worksheets(F).Range("A" & RR1).Value <> "" Then
    If Worksheets(F).Range("B" & RR1).Value = "Spia" And Tr = 0 Then
        Conc1 = Worksheets(F).Range("A" & RR1).Value
        For RR2 = RR1 + 1 To RR1 + 50
            If Worksheets(F).Range("B" & RR2).Value = "" Then
            Tr = 0
                Worksheets(F).Range("E" & RR2).Value = Worksheets(F).Range("A" & RR2).Value - Conc1
                RR1 = RR2
                GoTo SaltaRR2
            End If
        Next RR2
        Tr = 1
SaltaRR2:
    End If
Else
Tr = 0
End If
Next RR1
Next F
End Sub
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel o macro (solita formula)

Postdi Lucio Peruggini » 07/03/13 00:12

Niente da fare, funziona ma si blocca sempre alla riga 15.038; bhoo.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel o macro (solita formula)

Postdi Flash30005 » 07/03/13 01:35

Razionalmente non esiste bhoo!
Inviami il file perché NON PUO' ESSERE!!!
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Excel o macro (solita formula)":


Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti