Condividi:        

confronto valori e calcolo differenze

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

confronto valori e calcolo differenze

Postdi miko » 18/07/22 05:54

Buongiorno,
ho bisogno del vostro aiuto per risolvere il seguente problema.
ho un range di R righe ed 1 sola colonna con valori numerici.
devo confrontare ciascun valore con quello precedente e stabilire se il valore in esame
è minore, uguale o maggiore del precedente;
nel caso di valore minore o maggiore devo calcolare lo scostamento-differenza Min e Max che si realizza
analizzando, di volta in volta, le varie righe successive, ottenendo alla fine del ciclo
un prospetto simile a quello in figura.

Immagine

esempio:
Riga 16 : Val = 155
Riga 17 : Val = 205 ->> 205 Maggiore di 155 ->> Conta Maggiore = 1 ->> Differenza = 50 ->> Max = 50
Riga 18 : Val = 205 ->> 205 Uguale 155 ->> Conta Uguale = 1
Riga 19 : Val = 170 ->> 170 Minore di 205 ->> Conta Minore = 1 ->> Differenza = 35
Riga 20 : Val = 175 ->> 175 Maggiore di 170 ->> Conta Maggiore = 2 ->> Differenza = 5 ->> Min = 5.

il prospetto finale deve quindi riassumere il totale delle volte che il valore è uguale, minore o maggiore
di quello precedente, e memorizzare i valori Min e Max delle differenze nei 2 casi di valori minori e maggiori.
Saluti, grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: confronto valori e calcolo differenze

Postdi Anthony47 » 19/07/22 13:35

Non so se ho capito bene...

Immagine
Con riferimento alla figura:
in B17:
Codice: Seleziona tutto
=SE(A17>A16;"Maggiore";SE(A17=A16;"Uguale";"Minore"))

In C17:
Codice: Seleziona tutto
=SE(B17<>"Uguale";ASS(A17-A16);"")

Poi copiare le formule verso il basso

Per il riepilogo:
In C22:
Codice: Seleziona tutto
=CONTA.SE(B16:B20;"Minore")

In D22:
Codice: Seleziona tutto
=MIN(SE($B$16:$B$20=B22;$C$16:$C$20;""))   
(da confermare con Contr-Maiusc-Enter, non sil solo Enter)

In E22:
Codice: Seleziona tutto
=MAX(SE($B$16:$B$20=B22;$C$16:$C$20;""))
(sempre Contr-Maiusc-Enter)

In C24 e C26 formule analoghe a C22

In D26:E26 copierai le formule da D22:E22
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confronto valori e calcolo differenze

Postdi miko » 19/07/22 15:36

Buonasera, grazie per il tuo contributo
hai capito perfettamente la mia richiesta, anche se usando le formule,
come da tuo esempio, non ottengo tutti gli stessi risultati del tuo prospetto,
forse commetto qualche errore nel digitare le formule.
tuttavia avrei bisogno di una macro dovendo analizzare circa 10.000 righe in aumento.
mi permetto di chiarire eventuali dubbi con un esempio che coinvolge i valori minimi,
per quelli massimi il ragionamento è identico.

supponiamo che la riga iniziale sia la 10 e quella finale sia la 100, con valori contenuti nella sola colonna O.

devo confrontare la riga 11, valore 146, con la 10, valore 155;
conto se il valore di riga 11 è minore, uguale o maggiore del valore di riga 10, (quindi abbiamo 3 conteggi)
calcolo la differenza tra i due valori, chiamiamola Diff = -9 ->>> = 9 ;
poiché abbiamo esaminato solo 2 righe, non vi è alcuna differenza tra MinDiff e MaxDiff, entrambi sono uguali a 9;
memorizzo MinDiff = 9 e MaxDiff = 9, riporto eventualmente e se necessario il risultato, Conteggio = 1 della situazione Minore
ed i due valori MinDiff e MaxDiff nel prospetto;

poi confronto la riga 12, valore 135, con la riga 11, valore 146,
conto se il valore di riga 12 è minore, uguale o maggiore del valore di riga 11, in questo caso ancora minore;
quindi ContoMinore = ContoMinore Precedente + 1
calcolo la differenza tra i due valori, Diff = -11 ->>> = 11 ;
quindi ora MinDiff resta uguale a = 9, valore precedente,
mentre il MaxDiff passa, dal valore 9 precedente, al valore 11 attuale.
riporto, se necessario, il risultato nel prospetto in corrispondenza della situazione di valore minore;

dopo esamino la riga 13 con la 12 etc...
...
...
la riga 99 con la 98 etc...
la riga 100 con la 99 e riporto il risultato nel prospetto;

alla fine del ciclo il prospetto risultante, di interesse, riporterà quante volte si conta la situazione di minore,
cioè quante volte un valore di colonna O è Minore di quello precedente
ed in questo ambito quale è stata la differenza più piccola tra i valori, e quale è stata la differenza più grande.
analogo discorso nel caso si registrano situazioni con valori maggiori.
nel caso di valori uguali tra le righe avremo solo un conteggio.
spero nella chiarezza dell'esposto.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: confronto valori e calcolo differenze

Postdi Anthony47 » 20/07/22 10:22

Una macro che credo faccia questa analisi:
Codice: Seleziona tutto
Sub MiMax()
Dim wArr, I As Long, cMin As Single, cMax As Single
Dim miArr(1 To 3) As Single, maArr(1 To 3) As Single, eqCnt As Long
Dim StarD As Range, Riep As Range
'
Set StarD = Sheets("Foglio1").Range("A3")       '<<< Inizio dati
Set Riep = Sheets("Foglio2").Range("B2")        '<<< Posizione del riepilogo
'
miArr(2) = 99999
maArr(2) = 99999
wArr = Range(StarD, StarD.End(xlDown)).Value
For I = 2 To UBound(wArr)
    If wArr(I, 1) > wArr(I - 1, 1) Then
        maArr(1) = maArr(1) + 1
        If (wArr(I, 1) - wArr(I - 1, 1)) > maArr(3) Then maArr(3) = wArr(I, 1) - wArr(I - 1, 1)
        If (wArr(I, 1) - wArr(I - 1, 1)) < maArr(2) Then maArr(2) = wArr(I, 1) - wArr(I - 1, 1)
    ElseIf wArr(I, 1) < wArr(I - 1, 1) Then
        miArr(1) = miArr(1) + 1
        If (wArr(I - 1, 1) - wArr(I, 1)) > miArr(3) Then miArr(3) = wArr(I - 1, 1) - wArr(I, 1)
        If (wArr(I - 1, 1) - wArr(I, 1)) < miArr(2) Then miArr(2) = wArr(I - 1, 1) - wArr(I, 1)
    Else
        eqCnt = eqCnt + 1
    End If
Next I
Riep.Resize(3, 1).Value = Application.WorksheetFunction.Transpose(Array("Minore", "Uguale", "Maggiore"))
Riep.Offset(0, 1).Resize(1, 3).Value = miArr
Riep.Offset(1, 1).Value = eqCnt
Riep.Offset(2, 1).Resize(1, 3).Value = maArr
'
End Sub

Come sempre le istruzioni marcate <<< devono essere personalizzate con i tuoi parametri

Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confronto valori e calcolo differenze

Postdi miko » 01/08/22 16:20

Buonasera,
ho perso un pò di tempo per riorganizzare la macro principale che richiama il tuo codice
che funziona perfettamente.
grazie, saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "confronto valori e calcolo differenze":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti