› Excel e gli applicativi Microsoft Office › Riconosci l'intruso
-
AutoreArticoli
-
Vi allego un file, dove ci sono 5 numeri, che poi dovrebbero corrispondere ad una sequenza decrescente dal primo al quinto (estratti automaticamente da un sistema di rifornimento gasolio).
Ogni tanto qualcosa va storto, ci sono errori di imputazione manuale errati, o il sistema va in tilt e mette 1.
Siccome poi c'è la formula in F3, che calcola la differenza tra il più grande e il più piccolo della sequenza, essendo in questo caso il valore 1 un valore spurio, secondo voi quale può essere una formula intelligente per non considerare nella differenza in f3 quel valore 1?
riallego il file
Allegati:
You must be logged in to view attached files.Buona sera, @nicopana;
purtroppo non mi è chiaro lo scopo della Formula in Cella "F3":=+SE.ERRORE((GRANDE(A3:E3;1)-PICCOLO(A3:E3;CONTA.SE(A3:E3;0)+1));"")
Ovviamente si riesce a calcolare:=GRANDE($A$3:$E$3;1)Risultato = 5.623
=PICCOLO($A$3:$E$3;2)Risultato = 5.555
Se puoi precisare più compiutamente il risultato voluto dalla Formula in "F3" forse riesco a esserti più utile.
Giuseppe
Buonasera a tutti. Neppure io, come GiuseppeMN (un saluto), riesco a comprendere chiaramente la funzione in F3. Presumo che il +1 presente nel conta.se(a3:e3;0)+1, serva ad eliminare lo zero. Se ho intuito correttamente, userei la matriciale =max(a3:e3)-min(se(a3:e3>0;a3:e3)) Ripeto: matriciale
Forse è il caso che chiarisca meglio quanto ho proposto. Perché la mia formula possa funzionare, non si deve mai avere il nr 1 come risultato nella serie a3:e3, ma si deve avere lo 0 (zero). Quindi, quando il sistema va il tilt (come scritto da Nicopana), non deve far apparire il nr 1, ma lo zero.
Buonasera a tutti
se l'utente vuole fare il grande meno il piccolo escludendo gli uno
=GRANDE(A3:E3;1)-MIN(SE(A3:E3>1;A3:E3)) da confermare matriciale (CTRL+SHIFT+INVIO)
oppure
=GRANDE(A3:E3;1)-INDICE(A3:E3;CONFRONTA(INDICE(AGGREGA(15;6;(A3:E3+RIF.COLONNA(A3:E3)/10^5)/(A3:E3>1);1);;);INDICE((A3:E3+(RIF.COLONNA(A3:E3)/10^5));;);0))
da inviare normale
Buona sera a Tutti.
@D@nilo, ipotizza:
... se l'utente vuole fare il grande meno il piccolo escludendo gli uno ...Se fosse veramente così penso sarebbe possibile utilizzare:
Grande - Piccolo proposte in #27391Non ci resta che rimanere in religiosa attesa di un chiarimento dell'utente; ovviante compatibilmente con i suoi impegni.
Giuseppe
Buongiorno
@giuseppe con la proposta in #27391 se per caso ci sono due uno in A3:E3 cosi ti pescherebbe comunque il secondo uno....
È vero.
Giuseppe
Grazie per le risposte, e scusate per il ritardo.
Provo a fornirvi i chiarimenti richiesti:
- l'esempio che vi ho allegato serviva a sottolineare il fatto che, se all'interno di una sequenza di 5 numeri in ordine crescente dal 5 all'1, più o meno pressocchè in un intorno comune, se si presentavano delle cifre spurie (come l'1 in questo caso), non doveva essere considerato
- credo che la formula del file non contempli il fatto di eliminare l'1. Infatti il risultato nella formula F3 è dato proprio dalla differenza tra GRANDE (5623) e PICCOLO (1), quando invece quest'ultimo dovrebbe essere il valore in N3 (cioè 5555), e quindi dare un risultato diverso
Quindi, sicuramente la formula dovrà in primis contemplare il fatto di non considerare ne come GRANDE ne come PICCOLO i valori 0 e 1 che spesso si possono presentare.
Ciao
Allega un file con un po' di esempi delle situazioni che si possono presentare e metti i risultati che vuoi ottenere scritti a mano
ciao
=GRANDE(A3:E3;1)-MIN($A$3:$E$3;CONTA.SE($A$3:$E$3;"<2")+1)
Nelle righe 4 6 e 8 dell'allegato ti ho inserito i 3 casi che tipicamente andrebbero NON considerati, cioè con valori pari a 1 o 0, o quelli dove possono capitare qualche valore con cifre numeriche superiori al resto dei 5.
Allegati:
You must be logged in to view attached files.Il caso della riga 8 lo potresti più semplicemente sostituire con un controllo che dal valore 1 al valore 5 devono essere valori descrescenti (ho pensato questo perché se si inserisce un controllo sul numero di cifre, quando magari poi capita un valore con i decimali, pur essendo corretto nella sequenza, per numero di cifre maggiore verrebbe escluso).
=GRANDE(A3:E3;1)-MIN($A$3:$E$3;CONTA.SE($A$3:$E$3;"<2")+1)
Non funziona, calcola la differenza tra GRANDE e 1
ciao
perché sono scemo io
va messo piccolo non min
=GRANDE(A3:E3;1)-PICCOLO($A$3:$E$3;CONTA.SE($A$3:$E$3;"<2")+1)
ciao
Adesso il calcolo funziona, vanno solo eliminati i dollari sulla riga nel PICCOLO. Se ho ben capito, hai eliminato la considerazione di 0 e 1 giusto?
giusto eliminati gli 0 e gli 1
metti gli assoluti solo sulla colonna
Ok, grazie.
Si adesso resterebbe solo il caso di valori con numero di cifre diverso, che avevo suggerito di provare a risolvere come un controllo dal rifornimento 1 al rifornimento 5 (essendo temporalmente successivi) di una sequenza decrescente, andando quindi ad escludere il valore spurio
Tipo ad esempio, in questa sequenza ( 7208/7187/594/7107/0) lo 0 va già via, ma dovrebbe andar via anche il 594
In quest'altra sequenza ( 82072/4852/13260/13253/13239) dovrebbero andar via i primi 2, anche se in questo caso è più complicata come analisi immagino, quindi nel caso mi basterebbe l'analisi sulla prima sequenza
ciao
complicata si anche perchè
( 82072/4852/13260/13253/13239)
il 4852 si capisce non è in ordine decrescente
ma il 82072 è esatto.
bisognerebbe decidere se devono rientrare in un range
che so 13000-13999
in pratica usare le prime due cifre per il raffonto
e non mi sembra semplice
si hai ragione. In effetti bisognerebbe individuare una sorta di "intorno" entro il quale far variare i numeri.
Mi hai dato però questo spunto, e se si estraesse con SINISTRA le prime due cifre di ogni numero, e se ci fosse tra le 2 celle consecutive una differenza superiore a 1, non si considerava la 1a e poi via via in avanti?
Quindi se per esempio consideri la stringa che ti ho postato ci sarebbe da fare questo controllo:
82-48 >1 (non si considera la 1a cella)
48-13 >1 (non si considera la 2a cella)
13-13 non è maggiore di 1 (si può considerare questa cella)
E fin qui potrebbe funzionare, però poi ho trovato anche una stringa tipo questa ( 4890/48873/48843/48806/48774), dove il primo numero è in errore, perché manca una cifra, ma in realtà il controllo da me pensato non restituirebbe l'errore
ciao
non è ancora perfetta ma usando delle colonne d'appoggio
qualcosa ne è uscito
=GRANDE(SE((SINISTRA(G3:K3;2)*1>=MODA(SINISTRA(G3:K3;2)*1)-1)*(SINISTRA(G3:K3;2)*1<=MODA(SINISTRA(G3:K3;2)*1)+1)*(G3:K3>0);G3:K3);1)-PICCOLO(SE((SINISTRA(G3:K3;2)*1>=MODA(SINISTRA(G3:K3;2)*1)-1)*(SINISTRA(G3:K3;2)*1<=MODA(SINISTRA(G3:K3;2)*1)+1)*(G3:K3>0);G3:K3);1)
https://www.dropbox.com/s/idbzg5io5xrokwa/copia%20di%20sequenza%20%282%29.xlsx?dl=0
Con le colonne di appoggio ok, ma perché secondo te è giusto usare la funzione MODA? perché se non mi sbaglio questa restituisce un numero che all'interno di un intervallo si presenta con maggiore frequenza. Me lo chiedevo perché in una sequenza tipo, si tratterebbe di 5 valori univoci
ciao
ho usato moda per trovare il valore più frequente
ma poi lo valuto con un range di +/-1
se trova 13
valuterà da 12 a 14
metti questa in G3 e tirala a destra e in basso
=SE(E(A3>B3;MODA(LUNGHEZZA($A3:$E3))=LUNGHEZZA(A3));A3;0)
che elimina la possibilità di trovare numeri sfalsati
tipo
1382072 4852 13260 13253 13239
visto che usiamo le ultime due cifre
fai delle prove
-
AutoreArticoli
