Come ho detto nell' intervento precedente (che pero' e' in fondo alla pagina1 e quindi invisibile;
viewtopic.php?f=26&t=104371#p609580), l' errore sul calcolo (Ultimo-Basso)/(Alto-Basso) e' sul 19° decimale (partendo dai 5 interi del 23000); quindi basta arrotondare quel risultato al 10 decimale e il risultato sara' ok. Cioe' con la formula
- Codice: Seleziona tutto
=SE(VAL.NUMERO(Ultimo);SE(E((ARROTONDA((Ultimo-Basso)/(Alto-Basso);10)*100)<=Livello;Var<-Soglia);"Attiva";"Disattiva");"")
Mi permetto di pensare che anche con decimali molto piu' bassi il risultato sara' soddisfacente; diciamo che si puo' benissimo arrotondare a 6 decimali per coprire valori di Ultimo /Basso /Alto fino a 7 digit (1-9milioni) senza rischiare di falsare i calcoli con valori nell' ordine delle unita'.
Come vedete io preferisco lavorare sulle formule, non sul vba; ma e' questioni di preferenze personali.
Ribadisco comunque la mia opinione su tutta la discussione:
Anthony ha scritto:Ma io non vedo tutto questo problema...
Dici "ho un livello minimo che attiva una condizione", quindi hai una condizione On/Off; e' critico che la "condizione" invece di scattare a 23146,26-Epsilon (il noto "Epsilon piccolo a piacere") scatti a 23146,26 + Epsilon? Penso di no, e quindi tutto si traduce alla meraviglia sul fatto che due entita' (il foglio Excel e il vba) fanno calcoli che sembrano uguali e producono risultati che differiscono di un Epsilon; ma dimentichiamo che solo qualche anno fa, se facevi 10/3*3 molte calcolatrici davano ancora come risultato 9.999999
Nel caso in discussione l' Epsilon e' pari a 3.9*10(-19); piccolo abbastanza...
Ciao