Condividi:        

Formula che segnala spostamenti in riga

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 che segnala spostamenti in riga

Postdi contiend » 11/02/15 17:25

Ciao a tutti
ho una tabella con sei nominativi in classifica (in realtà sarebbero 10, ma nella prova ne ho messi 10).

La tabella in questione rimane, per ogni foglio sempre nella stessa posizione (anche per i nuovi fogli creati), in B5:C11; nella colonna B c'è la posizione, nella colonna C i relativi nomi.

Come vedete nel file d'esempio, che si può scaricare qui
https://www.dropbox.com/s/8rc79tc0d3yl0 ... .xlsx?dl=0
esistono già dei fogli numerati in modo sequenziale.

Ciò che io faccio è prendere il foglio BASE, copiarlo e rinominarlo in maniera sequenziale rispetto al precedente.

Quello che mi piacerebbe fare, e non so se sia possibile :oops: , è che la formula controlli la classifica del nuovo foglio, e lo confronti SOLO con il precedente.

A questo punto, se vede che un nome è salito di posizione, dovrebbe riportare (al posto del numero nella colonna B), il numero 1.
Se è rimasto nella stessa posizione dovrebbe riportare il numero 2.
Se è sceso di posizione dovrebbe riportare il numero 3.

Questa cosa del numero 1 - 2 -3 la utilizzerei per poi usare una FORMATTAZIONE CONDIZIONALE ed avere in realtà, al posto dei numeri, 3 icone :
freccia su verde,
freccia giù rossa
trattino giallo.

Non so se è possibile saltare anche la formatazione condizionale ed avere come risultato direttamente il set di icone. Ma già fare il primo passo sarebbe perfetto per me.

Spero di essermi spiegato nel miglior modo possibile.

Intanto,
vi ringrazio per la pazienza e l'attenzione.

Come sempre gentilissimi
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Sponsor
 

Re: Formula che segnala spostamenti in riga

Postdi Flash30005 » 11/02/15 18:10

Non è molto chiaro se le frecce o numeri 1,2 ,3 devo essere inseriti nel foglio "Base" o nel foglio rinominato.

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: Formula che segnala spostamenti in riga

Postdi contiend » 11/02/15 19:07

Io modifico i dati di settimana in settimana nel foglio BASE, poi copio ed incollo il foglio rinominandolo . Teoricamente la formula, inserita nel foglio BASE, dovrebbe confrontate io tutto con l'ultimo foglio esistente
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Re: Formula che segnala spostamenti in riga

Postdi Flash30005 » 11/02/15 19:16

Ma scusa se tu copi il foglio base e la copia la rinomini ad esempio 305 (ultimo esistente 304)
il foglio 305 è come il foglio base quindi non c'è alcuna salita o discesa in classifica
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: Formula che segnala spostamenti in riga

Postdi contiend » 11/02/15 19:22

Il foglio BASE lo modifico una volta alla settimana . La classifica cambia sempre. Fatta questa modifica copio incollo e rinomino il foglio in maniera sequenziale .
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Re: Formula che segnala spostamenti in riga

Postdi Flash30005 » 12/02/15 01:05

Prova questa macro

Codice: Seleziona tutto
Sub Classifica()
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Set WS1 = Worksheets("BASE")
    WS1.Range("B6:B11").Font.Name = "Webdings"
    WS1.Range("B6:B11").Font.Size = 14
WS1.Activate

MMaxF = 0
For f = 1 To Worksheets.Count
    If IsNumeric(Worksheets(f).Name) Then
        MaxF = Val(Worksheets(f).Name)
        If MMaxF < MaxF Then MMaxF = MaxF
    End If
Next f
NomeFN = MMaxF + 1
NFS = Trim(Str(NomeFN))
NFOld = Trim(Str(MMaxF))
Set WS2 = Worksheets(NFOld)

For RR1 = 6 To 11
NomG1 = WS1.Range("C" & RR1).Value
    For RR2 = 6 To 11
        NomG2 = WS2.Range("C" & RR2).Value
        If NomG1 = NomG2 Then
            Class1 = RR1 - RR2
                Pos1 = "="
                ColC = 44 'Arancio
            If Class1 < 0 Then
                Pos1 = 5
                ColC = 43 'verde
            End If
            If Class1 > 0 Then
                Pos1 = 6
                ColC = 3 'Rosso
            End If
            WS1.Range("B" & RR1).Value = Pos1
            WS1.Range("B" & RR1).Font.ColorIndex = ColC
            GoTo saltaRR2
        End If
    Next RR2
saltaRR2:
Next RR1
WS1.Copy Before:=Sheets(Worksheets.Count)
ActiveSheet.Name = NFS
WS1.Select

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: Formula che segnala spostamenti in riga

Postdi contiend » 13/02/15 00:17

Ciao Flash,
la tua macro va BENISSIMO ...nel foglio di test. :oops:

Ora volevo metterla nel foglio reale , e mi sono accorto che le celle non sono le stesse. :-?

La tabella reale prende in esame da AO31:AO40 per quanto
riguarda le posizioni (1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10)
Mentre in AP31:AP40 ci sono i nomi.

Ho provato a modificare la tua macro da solo ma il risulltato finale che ho, è che mi si visualizzano solo i TONDINI GIALLI, ma non la FRECCIA VERDE e FRECCIA ROSSA!! Puoi aiutarmi? :aaah

Codice: Seleziona tutto
Sub NMiconeClassifica()
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Set WS1 = Worksheets("BASE")
    WS1.Range("AO31:AO40").Font.Name = "Webdings"
    WS1.Range("AO31:AO40").Font.Size = 14
WS1.Activate

MMaxF = 0
For f = 1 To Worksheets.Count
    If IsNumeric(Worksheets(f).Name) Then
        MaxF = Val(Worksheets(f).Name)
        If MMaxF < MaxF Then MMaxF = MaxF
    End If
Next f
NomeFN = MMaxF + 1
NFS = Trim(Str(NomeFN))
NFOld = Trim(Str(MMaxF))
Set WS2 = Worksheets(NFOld)

For RR1 = 31 To 40
NomG1 = WS1.Range("AP" & RR1).Value
    For RR2 = 31 To 40
        NomG2 = WS2.Range("AP" & RR2).Value
        If NomG1 = NomG2 Then
            Class1 = RR1 - RR2
                Pos1 = "="
                ColAP = 44 'Arancio
            If Class1 < 0 Then
                Pos1 = 9
                ColAP = 43 'verde
            End If
            If Class1 > 0 Then
                Pos1 = 10
                ColAP = 3 'Rosso
            End If
            WS1.Range("AO" & RR1).Value = Pos1
            WS1.Range("AO" & RR1).Font.ColorIndex = ColAP
            GoTo saltaRR2
        End If
    Next RR2
saltaRR2:
Next RR1
WS1.Copy Before:=Sheets(Worksheets.Count)
ActiveSheet.Name = NFS
WS1.Select

End Sub


Questa sopra è la tua macro modifica erroneamente da me!

Comunque sia, GRAZIE INFINITE! :!:
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Re: Formula che segnala spostamenti in riga

Postdi Flash30005 » 13/02/15 05:59

Perché non hai dato subito le coordinate delle celle effettive invece di quelle che hai detto?
pensavi di semplificarci la vita?

Invece, così facendo, perdiamo il doppio del tempo.


Ho ricontrollato la tua macro ed è corretta,
Avrai fatto sicuramente delle prove creando il foglio numerico (copia di Base) pertanto se ripeti la macro avrai tutti pallini gialli in quanto le posizioni non sono cambiate :D
Quindi elimina il foglio (ultimo creato) e avvia la macro, se il foglio precedente ha i nomi in posizioni diverse vedrai le frecce verdi e rosse.

L'unica modifica che farei è aggiungere una riga codice per la formattazione dei simboli (frecce, pallino) centrati all'interno della cella
Codice: Seleziona tutto
    WS1.Range("AO31:AO40").Font.Size = 14   '<<<<<<<<<<<<<<<<< esistente
    WS1.Range("AO31:AO40").HorizontalAlignment = xlCenter   '<<<<<< aggiungi qui


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: Formula che segnala spostamenti in riga

Postdi contiend » 13/02/15 08:14

Buongiorno,
le coordinate TEST le avevo date perché mi piace capire quello che faccio, in caso nel futuro mi serva modificare qualcosa.
Sinceramente non sempre riesco a capire le formule che mi consegnate, devo dire la verità, ma è bello passare la nottata a cercare di farlo. :lol:

Detto questo, ad ogni modo hai assolutamente ragione: la prossima volta darò da subito le coordinate corrette e poi farò i vari test. Mi spiace :oops:

Tornando alla tua macro. Ricontrollando un altra volta gli errori (dopo una notte a riposare il cervello), ed ora funziona tutto alla grande.

- Il primo errore l'avevo fatto qui
Codice: Seleziona tutto
If Class1 < 0 Then
                Pos1 = 5
                ColAP = 43 'verde

Avevo modificato in Pos1 = 9 perché pensavo che quel numero fosse riferito alle posizioni e non al tipo di freccia utilizzata.

- Il secondo errore era qui:
Codice: Seleziona tutto
  WS1.Range("AO31:AO40").Font.Size = 14

Il font era troppo grande nel mio foglio quindi non si vedevano le frecce ma solo i pallini!! :oops: :oops: :oops: :oops:

Che dire, sei stato gentilissimo e molto paziente.
Grazie ancora. :D
La prossima volta vi darò i riferimenti corretti. Promesso :D :D
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Re: Formula che segnala spostamenti in riga

Postdi Anthony47 » 13/02/15 15:39

contiend ha scritto:Detto questo, ad ogni modo hai assolutamente ragione: la prossima volta darò da subito le coordinate corrette e poi farò i vari test. Mi spiace :oops:


Linee guida per pubblicare le vostre domande (vedi viewtopic.php?f=26&t=103911&p=605595#p605595)
5) Evitate di pubblicare strutture dati diverse da quelle che in realta' dovete gestire, a meno che non siete certi di riuscire ad adattare autonomamente le risposte che vi verranno fornite.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Formula che segnala spostamenti in riga":


Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti

cron