Condividi:        

CORREZIONE - FORMULA EXCEL

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

CORREZIONE - FORMULA EXCEL

Postdi Lucio Peruggini » 05/04/14 14:21

FORMULA EXCEL

Gentilmente mi sistemate questa formula secondo i criteri che spiego?
=SE(F2=F3;MIN(L2:L3);"")

In colonna “N” dovrei marcare il valore più piccolo della colonna (L) che a sua volta prende riferimento dalla colonna (H) dove sono formati identici valori uguali consecutivi.

Esempio: Prendiamo il gruppo 4 consecutivi (H16-17-18-19).
In (M) devo marcare in corrispondenza solamente il valore più piccolo dei 4 che si trova nella colonna (L) che, in questo caso è il numero 23 che va spostato in (M19).
In pratica, va marcato solamente un risultato (il più piccolo) di ogni gruppo della colonna della colonna (M).
In giallo, colonna (M) è dove andrebbe marcato il numero.

https://dl.dropboxusercontent.com/u/182 ... nismi.xlsx

Ringrazio per l’aiuto e buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: CORREZIONE - FORMULA EXCEL

Postdi Anthony47 » 06/04/14 00:28

Con quale logica posso determinare quali sono i "gruppi"? ad esempio perche' H13:H15 fa gruppo e non fa gruppo insieme con H10:H12?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: CORREZIONE - FORMULA EXCEL

Postdi Flash30005 » 06/04/14 06:07

@Anthony
credo che i "Gruppi" siano determinati dallo stesso numero sia in colonna G sia in colonna H
dopodiché determinare il valore minimo in L appartenente al "gruppo" e trascriverlo sulla stessa riga di posizionamento del valore minimo

Con le formule non saprei ma penso che si possa risolvere con una macro di questo tipo
Codice: Seleziona tutto
Sub TrovaMinGr()
UR1 = Range("A" & Rows.Count).End(xlUp).Row
Range("M4:M" & UR1).ClearContents
MinValL = 1000
For RR1 = 4 To UR1
CodUni = Format(Range("G" & RR1).Value, "00") & Format(Range("H" & RR1).Value, "00")
CodUni2 = Format(Range("G" & RR1 + 1).Value, "00") & Format(Range("H" & RR1 + 1).Value, "00")
ValL = Range("L" & RR1).Value
If ValL < MinValL Then
MinValL = ValL
NumR = RR1
End If
If CodUni <> CodUni2 Then
Range("M" & NumR).Value = MinValL
MinValL = 1000
End If
Next RR1
End Sub
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORREZIONE - FORMULA EXCEL

Postdi Lucio Peruggini » 06/04/14 11:54

Vi ringrazio!

In realtà i gruppi sono determinati dalle colonne F e G come giustamente ha interpretato Flash.
H13:H15 sono tre valori consecutivi uguali e formano un gruppo (3) colonna H.
Idem per F16:F19 che formano il gruppo (4).

Provo la macro; di sicuro sono convinto sia giusta.
Grazie molte e buona Domenica.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORREZIONE - FORMULA EXCEL

Postdi Lucio Peruggini » 09/04/14 00:23

Ciao Flash, ciao Anthony.
Chiedo scusa per il ritardo cui do conferma per l'esatta interpretazione e funzionalità della macro.

Ancora grazie e buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORREZIONE - FORMULA EXCEL

Postdi Anthony47 » 09/04/14 00:40

Se ha senso usare una formula invece che una macro (dipende da come variano i dati di origine e "quante" righe ci sono), allora prova in M4
Codice: Seleziona tutto
=SE(L4=MIN(SE((G$1:G$100&F$1:F$100)=(G4&F4);L$1:L$100;""));L4;"")
Da confermare con Contr-Maiusc-Enter e poi copiare verso il basso; non so se quei "100" sono sufficienti nelle tue tabelle; eventualmente modifica mantenendo la sintassi, ma e' chiaro che maggiore il numero di righe piu' pesante sara' il ricalcolo (facendo pendere la scelta a favore della macro).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: CORREZIONE - FORMULA EXCEL

Postdi Lucio Peruggini » 14/04/14 21:58

Ciao Anthony, scusa per il ritardo ma ultimamente problemi familiari mi hanno un po allontanato dal PC.
La tua formula funziona benissimo ma come hai asserito i tempi di elaborazione sono molto più lunghi rispetto alla macro.
In fatti, su 17.000 righe da processare i tempi con il mio PC sono stati (Quattro, cinque minuti).

La Macro si ferma a 265 righe, quante sono sul file inviato. Chiedo a Flash o anche a te: come allungare il range fino a 50.000?

Ho modificato nella macro solo i due valori che erano a mille ma non va oltre.

Codice: Seleziona tutto
Sub TrovaMinGr()
UR1 = Range("A" & Rows.Count).End(xlUp).Row
Range("M4:M" & UR1).ClearContents
MinValL = 20000     '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< corretto, era 1000
For RR1 = 4 To UR1
CodUni = Format(Range("G" & RR1).Value, "00") & Format(Range("H" & RR1).Value, "00")
CodUni2 = Format(Range("G" & RR1 + 1).Value, "00") & Format(Range("H" & RR1 + 1).Value, "00")
ValL = Range("L" & RR1).Value
If ValL < MinValL Then
MinValL = ValL
NumR = RR1
End If
If CodUni <> CodUni2 Then
Range("M" & NumR).Value = MinValL
MinValL = 20000     '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< corretto, era 1000
End If
Next RR1
End Sub
'Flash Domenica 06 Aprile 2014
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORREZIONE - FORMULA EXCEL

Postdi Anthony47 » 15/04/14 00:52

La macro di Flash determina su quale riga l' elaborazione termina in base al contenuto di colonna A; se si ferma a riga 256 e' perche' colonna A non e' compilata fino all' ultima riga; se questo e' il tuo caso, allora puoi calcolare l' ultima riga sul contenuto di colonna H:
Codice: Seleziona tutto
UR1 = Range("H" & Rows.Count).End(xlUp).Row

La modifica delle istruzioni MinValL = 1000 e' ininfluente.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: CORREZIONE - FORMULA EXCEL

Postdi Lucio Peruggini » 15/04/14 08:31

Ciao Anthony e grazie per le dritte.

Ho testato macro e formula su 16.400 righe

Macro = un minuto
Formula = sei minuti

Comunque le tue formule sono sempre da custodire laddove per range limitati sono ottime.

Grazie molte e buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORREZIONE - FORMULA EXCEL

Postdi Flash30005 » 15/04/14 11:31

Se a inizio macro inserisci queste due righe codice
Codice: Seleziona tutto
Application.ScreenUpdating = False
Application.Calculation = xlManual


e alla fine queste due per ripristinare..
Codice: Seleziona tutto
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True


otterrai minor tempo di esecuzione

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: CORREZIONE - FORMULA EXCEL

Postdi Lucio Peruggini » 16/04/14 11:59

Grazie Flash, da un minuto è passato a dieci secondi; ottimo!
Buona giornata
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23


Torna a Applicazioni Office Windows


Topic correlati a "CORREZIONE - FORMULA EXCEL":


Chi c’è in linea

Visitano il forum: Nessuno e 59 ospiti