Condividi:        

CORTESEMENTE - UNA MACRO

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

CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 13/08/13 21:19

Buona serata

https://dl.dropboxusercontent.com/u/182 ... PIE%20.PNG

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


Gentilissimi, per cortesia mi date una mano? Avrei bisogno di tre formule nelle colonne “N-O-P” o ancora meglio una macro, vista la quantità di righe che raggiungerà questo foglio Excel che allego. Infatti, a lavoro terminato presumo raggiunga le250.000 righe e quindi una macro penso sia molto più leggera.

In colonna “M” ho gli asterischi che formano dei gruppi secondo le impostazioni dettate. Orbene, il primo esempio visibile rappresenta un gruppo “6” colonna “O13” cioè sei asterischi “M8:M13”. Alla riga tredici dunque, colonne N-O-P assegneremo i seguenti valori:

Colonna N13 riporta il valore minimo di questo gruppo cioè (1) che troviamo nella colonna E13.

Colonna O13 riporta la quantità numerica del gruppo in questo caso (6) che corrisponde al medesimo valore nel range G8:G13.

Colonna P13 riporta la distanza che intercorre da (D13 meno D-D8) vale a dire: dal primo all’ultimo asterisco del gruppo.

Nel secondo caso troviamo un gruppo formato da tre asterischi, (O17) con valore minimo del gruppo uguale a 27 (N17) e distanza 5 (P17).

Seguono altri otto esempi che spero siano sufficienti a stabilire i criteri adottati.

Come sempre ringrazio per l’aiuto, un caro saluto e buon ferragosto a tutti.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 14/08/13 00:04

Prova questa macro
Codice: Seleziona tutto
Sub TrovaRit()
UR = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Foglio1").Range("N8:P50000").ClearContents
For RR1 = 8 To UR - 1
    SR = 0
    Gr1 = Sheets("Foglio1").Range("G" & RR1).Value
    For RR2 = RR1 + 1 To UR
        Gr2 = Sheets("Foglio1").Range("G" & RR2).Value
        If Gr1 = Gr2 Then
            SR = SR + 1
        Else
            If SR > 0 Then
                Sheets("Foglio1").Range("N" & RR2 - 1).Value = Sheets("Foglio1").Range("E" & RR2 - 1).Value
                Sheets("Foglio1").Range("O" & RR2 - 1).Value = SR + 1
                Sheets("Foglio1").Range("P" & RR2 - 1).Value = Sheets("Foglio1").Range("D" & RR2 - 1).Value - Sheets("Foglio1").Range("D" & RR1).Value
                RR1 = RR2 - 1
            End If
            GoTo SaltaRR2
        End If
    Next RR2
SaltaRR2:
Next RR1
End Sub


E Buon Ferragosto
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: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 14/08/13 01:09

Flash, sei GRANDE!!!
Grazie molte
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 20/08/13 22:17

Ciao Flash, o chiunque se la senta; cortesemente potresti fare un'altra piccola macro da inserire nel foglio (Schema?).

https://dl.dropboxusercontent.com/u/182 ... 20Spie.zip

Il file completo da inviare è troppo grande (240.000 righe e quindi invio un file parziale che è sufficiente per quello che vorrei ottenere nel foglio “schema” laddove sarà inserita la macro o anche una formula.

In questo foglio, nelle colonne (D – E) vorrei ottenere i valori massimi che si riscontrano nel foglio 1 colonne (C – F) che appartengono a ogni ruota della colonna “B”. Con i filtri e come esempio ho ricavato solamente i valori massimi dei numeri
(1 e 2).

Clicco sul filtro della colonna B e inserisco la prima ruota che è BA; clicco su quello della colonna C e imposto il numero desiderato, in questo caso “1” e ottengo i valori massimi che sono 118 colonna D8 (Schema) e 134 colonna E8 stesso foglio.

Idem per il numero 2:

Clicco sul filtro della colonna B e inserisco la prima ruota che è BA; clicco su quello della colonna C e imposto il numero desiderato, in questo caso “2” e ottengo i valori massimi che sono 119 colonna D8 (Schema) e 145 colonna E8 stesso foglio.



Questo passaggio deve essere fatto per le dieci ruote quindi c’è da rincretinire.

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

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 20/08/13 23:14

Anche se non molte righe in questo caso è conveniente una formula pertanto in F8 del foglio "Schema" puoi inserire questa formula
Codice: Seleziona tutto
=SOMMA.PIÙ.SE(Foglio1!C$8:C$250000;Foglio1!B$8:B$250000;B8;Foglio1!C$8:C$250000;C8)

Vedi se ti può andare bene intanto penserò alla formula da inserire in G8

ciao

NB. le ruote nel foglio1 hanno uno spazio spurio pertanto la formula ti fornirà 0 (zero) se non ripulisci con trova e sostituisci
"Ruota + spazio" con solo "Ruota" (operazione da fare una sola volta per ogni ruota)
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: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 20/08/13 23:50

Grazie Flash, provo la formula sul foglio originale e ti farò sapere.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 21/08/13 00:09

C'è un bug nella formula perché andrebbe divisa per il numero di ricerca complicando ancora il tutto
pertanto in F8 inserisci questa
Codice: Seleziona tutto
=SOMMA((Foglio1!B$8:B$250000=B8)*(Foglio1!C$8:C$250000=C8))

e in G8 questa
Codice: Seleziona tutto
=MAX((Foglio1!F$8:F$250000)*(Foglio1!B$8:B$250000=B8)*(Foglio1!C$8:C$250000=C8))

Ambedue da confermare con Ctrl+Maiu+Enter

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: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 21/08/13 00:22

Lucio Peruggini ha scritto:Grazie Flash, provo la formula sul foglio originale e ti farò sapere.


Ciao Flash, la formula effettivamente mi da "0"

Non ho ben afferrato cosa devo trovare e sostituire
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 21/08/13 00:31

Ho provato le altre due ma il risultato è sempre "0"
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 21/08/13 00:33

A te funziona?
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 21/08/13 00:43

Devi selezionare l'intera colonna B del foglio1
e con Trova e Sostituisci
dovrai "trovare" ogni ruota con spazio e sostituire ruota senza spazio es.:
Trova "BA " (senza virgolette è per farti vedere che c'è lo spazio)
e sostituisci con "BA"
poi premi sostituisci tutto
procedi con CA
FI etc etc

Le ultime formule vanno inserite con Ctrl+Maiu+Enter in quanto matriciali

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: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 21/08/13 00:59

Ho fatto tutto quanto il "trova e sostituisci" ma nulla di fatto, continua a restituire "0"; bhoo.

"Le ultime formule vanno inserite con Ctrl+Maiu+Enter in quanto matriciali"

Questo l'avevo già fatto. Queste formule però, sono maledettamente pesanti.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Anthony47 » 21/08/13 01:06

In Foglio1 hai scritto ad esempio "BA " (spazio in piu' su tutte la colonna B), in Schema hai scritto "BA".

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

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 21/08/13 01:17

Grazie Anthony, il problema infatti era proprio il foglio "schema"; ora funzionano bene!
Grazie anche a te Flash; per la sempre disponibilità che che hai avuto.

Notte
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 08/09/13 15:52

Ciao Flash e buona domenica

Per cortesia, vorrei aggiungere una colonna alla macro che hai fatto e che allego insieme al file completo <ruota Firenze>; in giallo ho marcato quindici valori.
Si tratta della colonna “T” che rileva il ritardo massimo del gruppo della colonna “J”.

Riepilogando su quanto hai già fatto:

Colonna “S” = ritardo minimo.
Colonna “T” = ritardo massimo.
Colonna “U” = gruppi ripetizione spia.
Colonna “V” = distanza

Grazie e buona serata

https://dl.dropboxusercontent.com/u/182 ... IRENZE.zip
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 09/09/13 04:17

Perdona ma non so cosa abbia fatto in particolare
da allora ne ho fatte di cose...
ho perso solo tempo a cercare uno delle ultime macro fatte per te in un file che ha uno schema diverso da ciò che proponi ora.
Quindi spiega meglio cosa vorresti ottenere

ciao

P.s. Ricorda che questo è un Forum nel quale altri devono apprendere ciò che si fa di volta in volta e non cercare chi che cosa... :?:
In altri termini quali sono i dati di input e i dati di output secondo le specifiche che illustrerai
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: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 09/09/13 13:21

Flash30005 ha scritto:Perdona ma non so cosa abbia fatto in particolare
da allora ne ho fatte di cose...
ho perso solo tempo a cercare uno delle ultime macro fatte per te in un file che ha uno schema diverso da ciò che proponi ora.
Quindi spiega meglio cosa vorresti ottenere


Pensavo bastasse l’Excel con la macro già inserita e funzionante, ma non ho tenuto conto che nel frattempo avevo cambiato l’output, prima vi era la cinquina unita in una sola colonna, ora sono cinque; chiedo scusa.


P.s. Ricorda che questo è un Forum nel quale altri devono apprendere ciò che si fa di volta in volta e non cercare chi che cosa...
In altri termini quali sono i dati di input e i dati di output secondo le specifiche che illustrerai


Afferrato il concetto, grazie per avermelo ricordato.


Allego un’immagine e cerco di spiegarlo meglio.
https://dl.dropboxusercontent.com/u/182 ... giunta.PNG


Iniziamo con la colonna “R” laddove con gli asterischi si definiscono i valori uguali e consecutivi delle colonne (B – C – K – L) che a loro volta formano i “gruppi” colonna “U”.

Orbene, la macro deve inserire il valore della colonna (aggiunta “T”). Questo valore è il ritardo massimo riscontrato nel gruppo, colonna “J”.

Esempio pratico:

Il primo che si riscontra è un gruppo due, cioè due eventi consecutivi con i medesimi valori; righe, nove e dieci. In quest’ultima (riga), colonne S-T-U-V si marcheranno quanto già specificato nel post precedente che riporto con maggiori specifiche:

Colonna “S” = ritardo minimo.
Ultima cella del gruppo colonna “J”

Colonna “T” = ritardo massimo.
Prima cella del gruppo colonna “J”) <aggiunta>.

Colonna “U” = gruppi ripetizione spia.
Quante volte si ripete la spia prima che avvenga lo sfaldamento dell’ambo? Colonna “K”.

Colonna “V” = distanza.
Questa distanza è ricavata per differenza (colonna “I” ma potrebbe essere ricavata anche dalla colonna “J”). E’ la differenza che intercorre dalla prima spia uscita all’ultima.

Spero di essermi spiegato nel migliore dei modi.

P.S. I valori della colonna “T” potrei ottenerli anche con formula ma significherebbe avere la formula su tutte le celle e non solamente sulle righe di pertinenza.
Ciao e buona giornata
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Flash30005 » 10/09/13 00:37

Spero di aver interpretato bene
Codice: Seleziona tutto
Sub TrovaRit()
UR = Sheets("Storici").Range("B" & Rows.Count).End(xlUp).Row + 1
Sheets("Storici").Range("S8:V50000").ClearContents
For RR1 = 8 To UR - 1
    SR = 0
    MMR = 0
    Gr1 = Sheets("Storici").Range("L" & RR1).Value
    For RR2 = RR1 + 1 To UR
        Gr2 = Sheets("Storici").Range("L" & RR2).Value
        If Gr1 = Gr2 Then
            SR = SR + 1
            MR1 = Sheets("Storici").Range("J" & RR2 - 1).Value
            If MMR < MR1 Then MMR = MR1
        Else
            If SR > 0 Then
                If MMR < MR1 Then MMR = MR1
                Sheets("Storici").Range("S" & RR2 - 1).Value = Sheets("Storici").Range("J" & RR2 - 1).Value
                Sheets("Storici").Range("U" & RR2 - 1).Value = SR + 1
                Sheets("Storici").Range("T" & RR2 - 1).Value = MMR
                Sheets("Storici").Range("V" & RR2 - 1).Value = Sheets("Storici").Range("I" & RR2 - 1).Value - Sheets("Storici").Range("I" & RR1).Value
                RR1 = RR2 - 1
            End If
            GoTo SaltaRR2
        End If
    Next RR2
SaltaRR2:
Next RR1
End Sub


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: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 10/09/13 10:04

Ciao Flash, hai interpretato magnificamente. Ottimo!
Ho spostato solamente la colonna dei gruppi alla fine.
Grazie molte e buona giornata
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: CORTESEMENTE - UNA MACRO

Postdi Lucio Peruggini » 07/10/13 20:28

Ennesima richiesta, grazie.
Allego foglio Excel
https://dl.dropboxusercontent.com/u/182 ... 20PC_.xlsx


Nel foglio “Attuali” colonna “K” dalla riga otto in poi, avrei la necessità di marcare i numeri (minimo 2) della colonna “B”. Questi devono corrispondere nel foglio “Archivio” riga due, e con esse ovviamente, la corrispondenza anche delle ruote; riga uno (foglio Archivio) con colonna “B” (foglio Attuali).
Laddove non si riscontrassero corrispondenze, la colonna “J, L e Q” devono aumentare di un’unità; quelle invece che hanno dato esito positivo (medesima corrispondenza) si fermano a quel punto. Non devono più essere conteggiate quando nel foglio archivio, si cambia estrazione. In tal caso la colonna “O” riporterà la dicitura ”positivo”.
Note: La ruota NZ colonne “BA:BE” foglio Archivio non va considerata.
In pratica, dovrei mantenere aggiornato il foglio Attuali.

Probabilmente è un pochino complicato ma sicuramente non per voi!

Come sempre anticipatamente ringrazio di cuore.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "CORTESEMENTE - UNA MACRO":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti