Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Formula o 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

Formula o Macro

Postdi Lucio Peruggini » 03/11/14 19:10

Formula o Macro
Ciao a tutti

Avrei un altro quesito da sbrogliare probabilmente un pochino più complesso dei precedenti post, laddove, penso che una macro sia l’occorrente ma potrei sbagliare.

Nel foglio (At) cella D1, inserisco un numero che corrisponde a tutti i numeri della colonna omonima ma, quelli che interessano sono esclusivamente nel range “D5:D127”, tutti quelli cioè che si trovano prima dello “0” nella colonna “J”. Infatti, impostando il filtro in questa colonna con (maggiore di zero) otteniamo il range nel quale operare. Range che ovviamente può variare poiché condizionato dal valore zero.

Trovato il numero in questione bisogna correggere nel foglio “Tab” che corrisponde allo storico di ogni numero, ruota e posizione, quanto vi è nella colonna “G” del foglio “At” in corrispondenza del numero inserito in “D1”.

Esempio:

Dalla formula di ninai (=CERCA.VERT(C5;Tab!$A$8:$CN$62;D5+2;FALSO) foglio At “I5” che trova in corrispondenza di ogni numero, ruota e posizione lo storico nel foglio Tab, riportandolo per l’appunto nella colonna “I5” e visto che ho inserito in D1 il numero 5, dovremmo cambiare i valori nel foglio “Tab” da 84 a 340 per il primo 5 in G5 ( nuovo ritardo storico di questo numero).

Riepilogando:
1) Inserisco un numero in D1 con riferimento al range della colonna “J” (maggiore di zero).
2) Poiché questo numero può essere presente più volte, bisognerebbe cambiare il nuovo valore appartenente che troviamo in colonna “G”, inserendolo nel foglio “Tab” in corrispondenza del numero stesso.
In questo caso per il numero 5 abbiamo 27 volte la sua presenza e quindi 27 valori (nuovi storici) da cambiare nel foglio Tab. Esattamente quelli riscontrati nella colonna “G” del foglio AT.

Foglio Tab
Colonna “A” che contiene ruota e posizioni da 1 a 5
Colonne “C8:CN61 che contengono i valori storici di ogni numero per ruota e posizione.

E’ un pochino complicato anche da spiegare ma penso di averlo fatto nel modo migliore.

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


Si potrà farlo? Confido nella vostra bravura e come sempre ringrazio già anticipatamente per il grandissimo aiuto.
Ciao e buona serata
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: Formula o Macro

Postdi ninai » 04/11/14 05:46

Ciao
Per niente convinto di aver ben capito, prova in C8, del foglio Tab:

=SE.ERRORE(INDICE(At!$G$5:$G$4345;CONFRONTA($A8&C$6;INDICE(At!$C$5:$C$4345&At!$D$5:$D$4345;);0));"")
e trascini a destra ed in basso fino a CN17, dopo selezioni tale area (C8:CN17) e la copi/incolli nelle altre equivalenti (C19, C30, ecc.)
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Formula o Macro

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

Ciao ninai, nella lunga formula che hai inserito non vedo nessun riferimento alla cella in "D1" del foglio At.
Altre sì non vedo nessun riferimento alle celle realmente interessate come ho scritto:

Nel foglio (At) cella D1, inserisco un numero che corrisponde a tutti i numeri della colonna omonima ma, quelli che interessano sono esclusivamente nel range “D5:D127”, tutti quelli cioè che si trovano prima dello “0” nella colonna “J”. Infatti, impostando il filtro in questa colonna con (maggiore di zero) otteniamo il range nel quale operare. Range che ovviamente può variare poiché condizionato dal valore zero.


Il numero interessato che cambia il valore in alcune celle del foglio Tab è esclusivamente quello inserito in "D1" del foglio "At" che, poiché ripetuto più volte ma con ruota e posizione diversa, deve aggiornare nel foglio Tab in corrispondenza di ogni ruota e posizione tutto ciò che riguarda questo numero (quello inserito in "D1").
Questo numero inserito in "D1" lo si può trovare più volte nel range D5:D127 cioè tutto ciò che è maggiore di "0" nella colonna "J".
In pratica il foglio Tab dev'essere aggiornato solamente se in D1 inserisco un numero; fatto ciò questo numero viene eliminato completamente da tutto il foglio ma i valori nel foglio "Tab" devono rimanere.

Lo so, è un po complesso il meccanismo! Per questa ragione pensavo a una macro.

Ciao e grazie come sempre per l'aiuto.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi ninai » 04/11/14 16:31

se l'hai provata e non è per niente confacente al tuo obiettivo, ignora il mio intervento.
La mia formula valeva per tutti i numeri, in base a quale filtravi in D, a prescindere del valore in D1 (visto che in ogni caso li dovevi filtrare manualmente). Ti aggiornava il tab in base alla colonna G e ti manteneva la J sempre a zero.
Ma l'avevo premesso che non ero convinto ed avrò fatto qualcosa che non centra niente.
Bye
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Formula o Macro

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

In realtà l'ho anche provata ma in "C8" del foglio Tab non scrive nulla.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi ninai » 04/11/14 16:55

ti allego il file di lavoro
https://www.dropbox.com/s/h4dfm61ejipzp ... .xlsx?dl=0

PS
in C8, non scrive niente perchè il numero 1, a cagliari, 1° estratto, non risulta in AT.
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Formula o Macro

Postdi Lucio Peruggini » 04/11/14 18:10

E' vero, non avevo pensato di verificare anche le altre celle.
Così facendo, però, non facciamo altro che scrivere nel foglio Tab quanto già abbiamo nel foglio At.
Il Tab deve rimanere con tutti i dati già esistenti (questi sono valori definitivi) per l'appunto in gergo "Storici".
Questi valori vanno solamente aggiornati quando per l'appunto in "D1" foglio At, inserisco un numero. Cosa vuole dire? Semplicemente che tutto quello che si trova al di sopra dello "0" in colonna "J", ha superato attualmente lo storico precedente che trovasi nel foglio "Tab"; in tal caso (inserimento numero in D1) il foglio Tab va aggiornato.

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

Re: Formula o Macro

Postdi ninai » 04/11/14 18:16

Non penso di poterti/saperti aiutare, credo serva il VBA, in ogni caso ho il sentore che si innesti un "circolo vizioso", ma sicuramente sbaglio, tu hai una visione più globale del problema.
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Formula o Macro

Postdi Lucio Peruggini » 04/11/14 18:31

Ti ringrazio molto!
A ogni modo: nessun circolo vizioso è tutto nella norma.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi Lucio Peruggini » 04/11/14 23:38

Questi valori vanno solamente aggiornati quando per l'appunto in "D1" foglio At, inserisco un numero. Cosa vuole dire? Semplicemente che tutto quello che si trova al di sopra dello "0" in colonna "J", ha superato attualmente lo storico precedente che trovasi nel foglio "Tab"; in tal caso (inserimento numero in D1) il foglio Tab va aggiornato.


Rettifico una condizione nel caso qualcuno dovesse metterci mano.

"Semplicemente che tutto quello che si trova al di sopra dello "0" in colonna "J"

In realtà, non è sempre detto che nella colonna "J" si trovi lo "0", il riferimento comunque è per tutti i numeri che in questa colonna non hanno il segno negativo davanti; cioè

Codice: Seleziona tutto
94   8701   CA 5   60   at   BA 1   220   8921   214   6
95   8638   MI 3   35   at   BA 1   283   8921   278   5
96   8708   NZ 4   32   at   BA 1   213   8921   208   5
97   8681   MI 3   34   at   BA 1   240   8921   238   2
98   8682   MI 3   34   at   BA 1   239   8921   238   1
99   8768   NZ 3   32   at   BA 1   153   8921   152   1
100   8659   MI 5   32   at   BA 1   262   8921   261   1
101   8693   MI 2   60   at   BA 1   228   8921   229   -1
102   8637   RO 2   77   at   BA 1   284   8921   285   -1
103   8703   CA 5   34   at   BA 1   218   8921   219   -1
104   8566   FI 5   35   at   BA 1   355   8921   356   -1
105   8658   RO 5   32   at   BA 1   263   8921   264   -1
106   8563   CA 2   35   at   BA 1   358   8921   360   -2
107   8614   CA 1   34   at   BA 1   307   8921   310   -3
108   8691   VE 1   77   at   BA 1   230   8921   233   -3
109   8648   NA 4   77   at   BA 1   273   8921   276   -3
110   8644   VE 4   77   at   BA 1   277   8921   280   -3
111   8763   MI 1   42   at   BA 1   158   8921   162   -4
112   8651   FI 3   32   at   BA 1   270   8921   274   -4


Guarda caso stasera è uscito proprio il numero 5, quello preso come esempio; che ho aggiornato manualmente per ruota e posizione nel foglio Tab.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi Anthony47 » 05/11/14 02:54

Nell' assenza mi si e' arrugginito qualcosa, perche' ho capito meno del solito...
Con quel poco ho immaginato questa macro:
Codice: Seleziona tutto
Sub lpzzzz()
Dim VArr, I As Long, CPos As Long, TVal As Long, LB2 As Long, myMatch, MErr As String
Sheets("At").Select
CPos = Application.WorksheetFunction.CountIf(Range("J:J"), ">=0")
TVal = Range("D5")
VArr = Range("C5").Resize(CPos, 8).Value
LB2 = LBound(VArr, 2)
With Sheets("Tab")
    For I = LBound(VArr, 1) To UBound(VArr, 1)
        If VArr(I, LB2 + 1) = TVal Then
            myMatch = Application.Match(VArr(I, LB2), .Range("A1:A200"), 0)
            If Not IsError(myMatch) Then
                .Cells(myMatch, 2 + TVal).Value = VArr(I, LB2 + 4)
            Else
                MErr = MErr & "; " & VArr(I, LB2)
            End If
        End If
    Next I
End With
If Len(MErr) > 0 Then
    MsgBox ("Ci sono stati errori nell' identificazione di Ruo-Pos" & vbCrLf & Left(mess, 100))
End If
End Sub

Lanciandola, va a inserire nel foglio Tab, sulla riga corrispondente alla col C di foglio At (Ruo-Pos) e nella colonna corrispondente al valore in D1, il valore prelevato da col G (Rit).

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

Re: Formula o Macro

Postdi Lucio Peruggini » 05/11/14 12:40

Ciao Anthony, non ti sei affatto arrugginito hai capito perfettamente i passaggi da fare, solamente (come accennato nel mio ultimo post laddove riprendevo la condizione immessa nel primo), i valori nel foglio "Tab" che vanno sostituiti prelevati da colonna G (rit), sono esclusivamente quelli che in corrispondenza della colonna "J" non hanno il segno (-) davanti al valore e non tutti quelli della colonna "G"; se è così che l'hai impostato.

COME SEMPRE UN GRANDISSIMO GRAZIE!!!

VEDI IMMAGINE INSERITA

https://dl.dropboxusercontent.com/u/182 ... ET%204.PNG
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi Lucio Peruggini » 05/11/14 14:44

https://dl.dropboxusercontent.com/u/182 ... ET%205.PNG

Ciao Anthony, mi era sfuggito un particolare! Nella immagine vi è la spiegazione.
Non credo sia complicato per te, altro che arrugginito!

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

Re: Formula o Macro

Postdi Anthony47 » 05/11/14 15:09

I valori presi in considerazione dalla macro sono solo quelli delle linee che in J risultano >=0, assumendo pero' che il foglio sia ordinato per J decrescente.
Quanto alla richiesta di inserire solo i valori Max, vorrei sapere se la sostituzione e' da fare solo quando in foglio Tab c' e' un valore inferiore al max rilevato su foglio At (es in Tab c' e' 500; il max su At e' 340; non si fa nessuna sostituzione) o se in ogni caso va fatta una sostituzione di quanto presente in Tab (es in Tab c' e' 500; il max su At e' 340; si inserisce 340 al posto di 500)

I valori sono inseriti in foglio Tab e rimangono li' fintanto che qualcuno o qualcosa li rimuove; direi cioe' che sono piu' permanenti che volatili, ma probabilmente non ho capito il tuo dubbio (Una volta inseriti i valori nel "Tab", questi sono permanenti?).

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

Re: Formula o Macro

Postdi Lucio Peruggini » 05/11/14 15:46

Per la domanda che ho fatto (permanenti) ho già verificato che i dati una volta inseriti, giustamente rimangono li a meno che non vengono rimossi; Ok!

I valori presi in considerazione dalla macro sono solo quelli delle linee che in J risultano >=0, assumendo pero' che il foglio sia ordinato per J decrescente.


Infatti è così, Ok!

Per la sostituzione nel "Tab" non v'è problema di sorta. I valori max di "At" che sostituiamo sono tutti più alti di quelli nel "Tab".
In questo foglio (Tab), infatti, ci sono valori antecedenti il nuovo Ritardo che troviamo esclusivamente nel foglio At, cioè quelli >di 0.
Gli altri (contrassegnati) con il segno "-" sono tutti più bassi nel fogli Tab.
In realtà, quel segno negativo sta a indicare la differenza che c'è dall'attuale allo storico in foglio Tab.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi Anthony47 » 06/11/14 00:41

Allora modifica la riga .Cells(myMatch, 2 + TVal).Value = VArr(I, LB2 + 4) in
If VArr(I, LB2 + 4) > .Cells(myMatch, 2 + TVal).Value then .Cells(myMatch, 2 + TVal).Value = VArr(I, LB2 + 4)

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

Re: Formula o Macro

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

Ci siamo quasi, vi è qualche accorgimento da apportare.
Vedi immagine

https://dl.dropboxusercontent.com/u/182 ... ET%206.PNG

Buona giornata e ancora molte grazie, ciao.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Formula o Macro

Postdi Anthony47 » 06/11/14 10:02

La macro che io uso e' questa:
Codice: Seleziona tutto
Sub lpzz()
Dim VArr, i As Long, CPos As Long, TVal As Long, LB2 As Long, myMatch, MErr As String
Sheets("At").Select
CPos = Application.WorksheetFunction.CountIf(Range("J:J"), ">=0")
TVal = Range("D5")
VArr = Range("C5").Resize(CPos, 8).Value
LB2 = LBound(VArr, 2)
With Sheets("Tab")
    For i = LBound(VArr, 1) To UBound(VArr, 1)
        If VArr(i, LB2 + 1) = TVal Then
            myMatch = Application.Match(VArr(i, LB2), .Range("A1:A200"), 0)
            If Not IsError(myMatch) Then
If VArr(i, LB2 + 4) > .Cells(myMatch, 2 + TVal).Value Then .Cells(myMatch, 2 + TVal).Value = VArr(i, LB2 + 4)
'                .Cells(myMatch, 2 + TVal).Value = VArr(i, LB2 + 4)
            Else
                MErr = MErr & "; " & VArr(i, LB2)
            End If
        End If
    Next i
End With
If Len(MErr) > 0 Then
    MsgBox ("Ci sono stati errori nell' identificazione di Ruo-Pos" & vbCrLf & Left(mess, 100))
End If
End Sub

Lavorando sul file in mio possesso non ho problemi; quindi ti chiedo di pubblicare il nuovo file su cui ti risultano anomalie.
Va notato che, da quello che capisco, le variazioni su foglio Tab alterano il contenuto di At-colonna J; sei certo che quella sia l' immagine di At "prima" di aver lanciaato la macro?

Comunque attendo il file.
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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formula o Macro

Postdi Lucio Peruggini » 06/11/14 13:19

https://dl.dropboxusercontent.com/u/182 ... 20FORUM.7z

Questo è il file che ho adoperato dal quale ho tratto anche l'immagine inviata.

E' giusto che i risultati in colonna "J" vengano modificati, infatti quella colonna è la differenza in positivo o in negativo di quanti colpi mancano allo storico proveniente dal foglio Tab.

La formula di ninai in colonna "I" aggiorna nella medesima tutti i ritardi di "G" quali provengono dal Tab.
Va da se: se un valore storico nel foglio Tab viene modificato, cambia in differenza di colpi.

Faccio un esempio:

Il primo numero 5 di G5 prima che lanciassi la macro aveva uno storico proveniente dal foglio Tab che era 84 (I5). Ora che abbiamo aggiornato il Tab, questo numero con l'estrazione successiva viene eliminato.
Supponiamo che fra 10 estrazioni il 5 esca ancora, il nuovo storico cui farà riferimento, non sarà più 84 ma bensì 340; foglio Tab G61.

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

Re: Formula o Macro

Postdi Lucio Peruggini » 06/11/14 14:33

Ciao Anthony, mi sono scaricato il primo file che ho inserito e, pur avendo applicato la macro che hai postato e che affermi avere i risultati giusti, a me li dà errati come da ultima immagine allegata.

Non so dove possa annidarsi l'inghippo.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Formula o Macro":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti