Regolamento:
https://sites.google.com/site/e90e50/documento-plinius/quizzone-di-excel
Classifica:
http://sites.google.com/site/e90e50/documento-plinius/quizzone-di-exc...
File quesiti:
http://sites.google.com/site/e90e50/documento-plinius/quizzone-di-exc...
___________________________________________________________________
Scusate se brucio i tempi ma nel weekend sono superimpegnato e non
posso differire.
per cui ecco il quesito:
Abbiamo una gara di appalto pubblica che deve essere aggiudicata con
il metodo cosiddetto della "media mediata".
Ci sono 25 imprese partecipanti ognuna delle quali applica uno ribasso
percentuale sull'importo a base d'asta.
Per comodità definiamo che questi sconti siano i seguenti (disposti in
ordine crescente): 10; 10,33; 10,66; 11; 11,33; 11,66; 12; 12,33;
12,66; 13; 13,33; 13,66; 14; 14,33; 14,66; 15; 15,33; 15,66; 16;
16,33; 16,66; 17; 17,33; 17,66; 18.
Il metodo prevede quanto segue:
Contare le imprese partecipanti, dividere per 10 ed arrotondare per
eccesso all'unita' superiore (nel nostro caso 3).
Escludere i 3 più alti ed i 3 più bassi (nel nostro caso rimangono
quelli compresi tra il 11% ed il 17%).
Calcolare la media dei numeri rimasti (nel nostro caso circa 13,997%).
Sottrarre la media calcolata ai singoli sconti e mantenere solo quelli
hanno un valore positivo >0 (nel nostro caso saranno gli sconti dal
14% al 17% che avranno dei resdui compresi tra lo 0,003% ed il
3,003%).
Dal nuovo elenco (quello compreso tra lo 0,003% ed il 3,003%)
calcolare una nuova media (che nel nostro caso sara' circa del 1,5%).
Sommare le due medie precedentemente calcolate (nel nostro caso
13,997% + 1,5% = 15,497%).
Questa percentuale calcolata (quella del 15,497%) rappresenta la
"soglia dell'anomalia".
I ribassi percentuali maggiori alla soglia dell'anomalia vengono
giudicati "anomali" e quindi scartati (nel nostro caso quelli compresi
tra il 15,66% ed il 17%).
Il ribasso percentuale immediatamente minore od uguale alla soglia
dell'anomalia si aggiudica la gara d'appalto (nel nostro caso il
15,33%).
Scopo del Quesito e' ottenere il ribasso del 15,33% che si
aggiudichera' la gara d'appalto.
Sono ammessi appoggi ma per il calcolo della formula piu' breve
verranno sommate le lunghezze di tutte le formule utilizzate (compresi
eventuali nomi).
E, mai come in questo caso, che si aggiudichi la gara chi "azzecca lo
sconto" !!! XD
A maggior chiarimento specifico che nel primo scarto delle 3 offerte +
alte e delle 3 offerte - alte, il 3 DEVE essere frutto del calcolo di
cui al passaggio precedente (in quanto, in un altro caso, se fossero
31 offerte se ne dovrebbero scartare 4).
ciao a tutti.
PS:
io ce l'ho fatta con un nome da 116 e una formula da 70, totale 186.
come minimo prevedo un 100 ^__^
Forte! ...
ho avuto poco tempo ... però intanto propongo una formula singola ...
così mi aggiudico i 5 punti :-)
ho creato un nome "sconti" che rappresenta il range dove sono
contenuti tutti gli sconti ...
la formula fa schifo :-) cercherò di migliorarla così poi la vendo ai
colleghi dell'ufficio acquisti ...
eccola:
=MAX(SE(sconti<=MEDIA(SE(SCARTO(sconti;;;RIGHE(sconti)-
INT(RIGHE(sconti)/10)-1)-MEDIA(SCARTO(sconti;INT(RIGHE(sconti)/
10)+1;;RIGHE(sconti)-2*(INT(RIGHE(sconti)/
10)+1)))>0;SCARTO(sconti;;;RIGHE(sconti)-INT(RIGHE(sconti)/10)-1)-
MEDIA(SCARTO(sconti;INT(RIGHE(sconti)/
10)-1;;RIGHE(sconti)-2*(INT(RIGHE(sconti)/10)-1)))))
+MEDIA(SCARTO(sconti;INT(RIGHE(sconti)/
10)+1;;RIGHE(sconti)-2*(INT(RIGHE(sconti)/10)+1)));sconti))
da confermare con ctrl+maiusc+invio
...
ora devo scappare ma questa sera tagliuzzo ...
ciaooo
r
eccola:
da confermare con ctrl+maiusc+invio
************************************
Bravo r!
Io, avevo questa ma non potevo postarla!!
Penso possa concorrere per la breve però! (forse...) ;-)
4 nomi + la formula
o:: 19 =Foglio1!$A$1:$A$25
n:: 9 =RIGHE(o)
s:: 21 =ARROTONDA(n/10+0,5;)
a:: 39 =SE((o>PICCOLO(o;s))*(o<GRANDE(o;s));o)
Formula:: 39 =CERCA(MEDIA(SE(a*(o-MEDIA(a))>0;o));o)
Lunghezza totale:: 127
Ciao,
E.
L'importante è che lasci qualche parentesi in più del necessario :-)
Bye!
scossa
cut
Io, avevo questa ma non potevo postarla!!
Penso possa concorrere per la breve però! (forse...) ;-)
4 nomi + la formula
o:: 19 =Foglio1!$A$1:$A$25
n:: 9 =RIGHE(o)
s:: 21 =ARROTONDA(n/10+0,5;)
a:: 39 =SE((o>PICCOLO(o;s))*(o<GRANDE(o;s));o)
Formula:: 39 =CERCA(MEDIA(SE(a*(o-MEDIA(a))>0;o));o)
Lunghezza totale:: 127
Ciao,
E.
----------------------------------------------------------------------
questo è sciacallaggio ;-)
o:: 19 =Foglio1!$A$1:$A$25
a:: 39 =SE((o>PICCOLO(o;3))*(o<GRANDE(o;3));o)
Formula:: 39 =CERCA(MEDIA(SE(a*(o-MEDIA(a))>0;o));o)
Lunghezza totale:: 96
spero di non essere fucilato sul posto.
Ciao,
E.
----------------------------------------------------------------------
questo è sciacallaggio ;-)
----------------------------------------------------------
Ciao Enrico, ovviamente la mia è una battuta, ma solo per notare che poiché
in "n" ed "s" calcoli rispettivamente il numero delle aziende nonché il
fattore di esclusione (3 nel ns. caso) sarebbe stato più opportuno
attribuire al nome "o" un intervallo dinamico. Altrimenti, tanto varrebbe
utilizzare direttamente i valori.
O no?
ciao paoloard
http://www.riolab.org
Ciao Paolo, credo che questo tipo di scelta dipenda dal contesto e dalle
preferenze. Č qualcosa da adattare in modo diverso al cambiare delle
situazioni.
Qui, mi sono limitato a risolvere nel modo piů sintetico la problematica
posta ritenendo che l'adattamento ad una gara diversa (e quindi in presenza
di un diverso numero di offerte) richiederebbe di cambiare solo l'intervallo
di riferimento di "o".
Si potrebbe anche ribaltare il discorso e calcolare "n" con
=CONTA.VALORI(A:A) e, da questo dato, ricavare "o". In tal modo non sarebbe
necessario alcun adattamento e la formula si adeguerebbe automaticamente ai
dati inseriti... ma sappiamo che in colonna A non ci siano, piů in basso,
altri dati?
Insomma, caso per caso, si possono scegliere le vie piů utili, mentre in
astratto č comunque un tirare ad indovinare!
Mi sfiziava l'idea dei nomi a scaletta, per risparmiare sulla lunghezza
della formule. Volendo si puň evitare anche il nome "n", visto che lo si usa
una sola volta per calcolare "s" e si economizzano un paio di caratteri...
o:: 19 =Foglio1!$A$1:$A$25
s:: 28 =ARROTONDA(RIGHE(o)/10+0,5;)
a:: 39 =SE((o>PICCOLO(o;s))*(o<GRANDE(o;s));o)
Formula:: 39 =CERCA(MEDIA(SE(a*(o-MEDIA(a))>0;o));o)
Lunghezza totale:: 125
Insomma, raschia raschia, c'č sempre da grattare qualcosina in piů!
Ciao,
Enrico :-)
ciao a tutti.
mi rendo conto che non mi sono espresso bene nell'enunciare il
problema (e pertanto tutte le risposte date sono comunque valide) ma
siete tutti partiti dall'assunto che gli sconti siano unicamente 25;
in realtà il mio è solo un esempio e nella pratica non si puo' sapere
a priori quanti siano i partecipanti ad una gara.
le formule dovrebbero pertanto essere più generali ed adattarsi ad un
qualunque quantitativo di partecipanti.
quindi:
1) ai fini della gara riteniamo pure che i partecipanti siano 25 pero'
il quantitativo del primo scarto, ricordo, va comunque calcolato e non
si puo' inserire direttamente un 3.
2) ai fini del corretto funzionamento vi invito a provare a
generalizzare :-)
buona domenica
ciao andrea, nessuno ha considerato fisso 3
hai provato le formule?
plinius usa
ARROTONDA(RIGHE(o)/10+0,5;)
io ho usato questo:
INT(RIGHE(sconti)/10)+1
però il risultato in entrambi i casi dipende dal numero di righe del
range contenente gli sconti (o nel primo caso e sconti nel secondo)
ci siamo?
ciao
r
ciao a tutti.
mi rendo conto che non mi sono espresso bene nell'enunciare il
problema (e pertanto tutte le risposte date sono comunque valide) ma
siete tutti partiti dall'assunto che gli sconti siano unicamente 25;
in realtà il mio è solo un esempio e nella pratica non si puo' sapere
a priori quanti siano i partecipanti ad una gara.
le formule dovrebbero pertanto essere più generali ed adattarsi ad un
qualunque quantitativo di partecipanti.
quindi:
1) ai fini della gara riteniamo pure che i partecipanti siano 25 pero'
il quantitativo del primo scarto, ricordo, va comunque calcolato e non
si puo' inserire direttamente un 3.
2) ai fini del corretto funzionamento vi invito a provare a
generalizzare :-)
buona domenica
*************************
Guarda Andrea che le formule sono già generali: va solo definito nel nome
"o" il range in cui si trovano le offerte di ribasso. Tutto il resto,
formula inclusa, vanno bene così.
Se invece vuoi dire che la formula deve "automaticamente" adattarsi alle
offerte inserite, basta fare la modifica di cui parlavo con Paolo (sempreché
in colonna A non ci siano anche altri dati, oltre alle offerte).
Il "3" che leggi lo aveva inserito Paolo scherzando...
Buona domenica anche a te!
Enrico :-)
io ho usato questo:
INT(RIGHE(sconti)/10)+1
ci siamo?
ciao
r
********************
Psssssssst... eh eh
...e hai pensato al caso in cui sconti/10 venga tondo tondo? ;-))
Ciao,
E.
nel tuo caso mi sembra ci sia il vantaggio che gli sconti possono
essere disposti in modo disordinato ... dico bene?
quando l'ho scritta volevo fare subito così anch'io ... però la smania
dei 5 punti :-)
una cosa ... difficile valutare la lunghezza delle formule con
nomi ... cioè se definisco un nome (di 10 caratteri) e poi lo uso 10
volte nella formula io vorrei contare 100 ... però per carità va bene
anche così ...
non capisco =ARROTONDA(RIGHE(o)/10+0,5;) ... vuoi proprio perdere? :-)
devo scappare .... mi dispiace ... taglio domani se rimane qualche
carattere di troppo :-)
ciao
r
>
> spero di non essere fucilato sul posto.
ma no ... figurati ...
FUOCO!
:-)
nel tuo caso mi sembra ci sia il vantaggio che gli sconti possono
essere disposti in modo disordinato ... dico bene?
quando l'ho scritta volevo fare subito così anch'io ... però la smania
dei 5 punti :-)
una cosa ... difficile valutare la lunghezza delle formule con
nomi ... cioè se definisco un nome (di 10 caratteri) e poi lo uso 10
volte nella formula io vorrei contare 100 ... però per carità va bene
anche così ...
non capisco =ARROTONDA(RIGHE(o)/10+0,5;) ... vuoi proprio perdere? :-)
devo scappare .... mi dispiace ... taglio domani se rimane qualche
carattere di troppo :-)
ciao
r
***********************************
No, no! I dati devono essere ordinati!
Quanto all'=ARROTONDA(RIGHE(o)/10+0,5;) ...... proprio di questo ti parlavo
più sopra eh eh
Ciao,
E.
ACC! ... e no che non ci ho pensato! :-)
e ora devo pure andare ...
p.s.
quindi anche la soluzione proposta non è valida!
ACC ... DOPPING :-)
************************************
Vale, vale... va solo ritoccata un pochino! :-)
sicuro?
uffa devo provarla allora ... mi sa che c'è qualcosa che mi sfugge!
ciao
r
********************************
Il cerca che deve trovare il valore <= a quello calcolato funziona solo se i
dati sono ordinati.
Volendo si potrebbe aggirare questa cosa, ma costa caratteri....e nel
quesito era precisato che i dati sono ordinati no?
si ok ... la funzione cerca penso di non averla mai usata ... e quel
piccolo - grande mi aveva ingannato ...
comunque per la gara si ... dati ordinati ... così ha detto il
quesitore :-)
> ********************
> Psssssssst... eh eh
> ...e hai pensato al caso in cui sconti/10 venga tondo tondo? ;-))
sistemo e taglio così:
ARROTONDA(RIGHE(o)/10+0,5;)
io ho usato questo:
INT(RIGHE(o)/10-0,01)+1
:-)
r
si era proprio quello che intendevo.
cioè avere un modello di foglio capace di adattarsi a qualsiasi
esigenze ed utilizzabile da chiunque senza dover modificare le
formule.
io ho fatto così
dati in colonna B
nemero imprese partecipanti(in C11): =CONTA.NUMERI(B:B)
numero imprese scartate in C16): =ARROTONDA(C11/10+0,5;)
inizialmente avevo optato per un piu' prosaico
=ARROTONDA.ECCESSO(C11/10;1)
nome m: =SCARTO($B$2;$C$16;;$C$11-2*$C$16) matriciale
nome n: =MEDIA(m)
soglia anomalia: =MEDIA(SE(m-n>0;m-n))+n matriciale
(non inispensabile per il risultato ma utile come indicazione)
impresa aggiudicataria: =INDICE(m;CONFRONTA(MEDIA(SE(m-n>0;m-n))+n;m))
matriciale
quindi 18+22+34+9+46=129
..... troppo lunghe per essere un pericolo ;-)
accorcio ancora un pochino questa parte ...
=INT(RIGHE(o)/10+0,99)
saluti
r
ciao Andrea!
chiarito che le formule rispondono alle esigenze ... direi però che la
mia era errata (il discorso dell'int(righe(sconti)/10)+1 non
funzionava correttamente nel caso il numero di partecipanti alla gara
era multiplo di 10) ... quindi propongo di dare la vittoria a plinius
e per la formula corta invece ho tagliato quell'arrotonda correggento
l'int ... quindi per ora mi aggiudico 3 punti ... sempre che appunto
qualcuno non torni a tagliare.
visto però che plinius sarà assente per due settimane il prossimo
quesito lo posterò io ... avendo comunque postato per primo una
soluzione che andava .... quasi bene :-)
se va bene a tutti (ma a te in particolare che secondo regolamento sei
il Giudice primo in quanto autore del quesito) ... aggiorno la
classifica e preparo la prossima domanda ... che verrà postata ...
em ... vi farò sapere giorno e ora in largo anticipo :-)
saluti
r
-1
=INT(RIGHE(o)/10+0,9)
saluti
r
o con stesso numero di caratteri:
=INT((RIGHE(o)+9)/10)
r
quindi ... la formula di plinius, lascianto solo un nome "sconti" che
identifica il range contenente i valori degli sconti (e che può essere
definito in modo variabile), potrebbe diventare:
=CERCA(MEDIA(SE(SE((sconti>PICCOLO(sconti;INT((RIGHE(sconti)+9)/
10)))*(sconti<GRANDE(sconti;INT((RIGHE(sconti)+9)/
10)));sconti)*(sconti-
MEDIA(SE((sconti>PICCOLO(sconti;INT((RIGHE(sconti)+9)/
10)))*sconti<GRANDE(sconti;INT((RIGHE(sconti)+9)/
10));sconti)))>0;sconti));sconti)
ho solo sostituito gli arrotonda e ho tolto una copia di
parentesi ...
per ora è la più corta.
saluti
r
correggo, perchè le parentesi sono necessarie, quindi:
=CERCA(MEDIA(SE(SE((sconti>PICCOLO(sconti;INT((RIGHE(sconti)+9)/
10)))*(sconti<GRANDE(sconti;INT((RIGHE(sconti)+9)/
10)));sconti)*(sconti-
MEDIA(SE((sconti>PICCOLO(sconti;INT((RIGHE(sconti)+9)/
10)))*(sconti<GRANDE(sconti;INT((RIGHE(sconti)+9)/
10)));sconti)))>0;sconti));sconti)
dove sconti è il nome che definisce il range che contiene gli sconti
proposti dalle aziende in gara
saluti
r