Formula

di
Anonimizzato12905
il
12 risposte

Formula

Buongiorno
non riesco a far funzionare questa formula che evidentemente è errata. Spiego il problema.
Ho una maschera con una casella di testo che riporta un valore. Vorrei inserire un'altra casella di testo che riporti un risultato condizionale:
Esempio: se la casella di testo riporta un valore <=15000 vorrei che in quella inserita da me calcolasse il 10%, se riporta un valore >di 15000;<=20000 calcolasse il 15% e così via.
Io ho inserito, e non funziona, la seguente formula:
Iff([IMP30]<=15000;[IMP30]*10%;iff[IMP30]>15000;<20000;[IMP30]*15%;0).
Dove sbaglio

Grazie

12 Risposte

  • Re: Formula

    Credo ci siano vari errori di sintassi. La funzione si chiama IIf. Il calcolo percentuale, non credo si calcoli così. Hai messo 2 IIf nidificate, devi mettere più parentesi tonde. Credo bisogna mettere = davanti...riepilogando, io la scriverei così:
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf(15000<[IMP30]<20000;[IMP30]*15/100;0))
  • Re: Formula

    Provato ma va in errore, dice: Operando o operatore mancante, carattere o virgola non valida, oppure testo senza virgolette.
  • Re: Formula

    Prova questa allora:
    =IIf([IMP30]<=15000;"[IMP30]*10/100";IIf(15000<[IMP30]<20000;"[IMP30]*15/100";"0"))
    oppure
    =IIf([IMP30]<=15000;"[IMP30]*10/100";"IIf(15000<[IMP30]<20000;"[IMP30]*15/100";"0")")
    pensavo che con i campi numerici non ci fosse bisogno delle virgolette.
  • Re: Formula

    Perfetto. Va bene la prima formula eliminando le virgolette.
    Praticamente:
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf(15000<[IMP30]<20000;[IMP30]*15/100;"0"))
    Una cosa non capisco: perchè se devo calcolare il 15% nel valore compreso fra 15000 e 20000
    devo inserire - IIf(15000<[IMP30]<20000;[IMP30]*15/100 - e non IIf(15000>[IMP30]<20000;[IMP30]*15/100 (dopo 15000 > e non <).

    Grazie per l'aiuto
  • Re: Formula

    Rettifico. Ho fatto in modo che IMP30 superasse i 15000 e non ha funzionato.
    La formula corretta, che funziona, è:
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000<20000;[IMP30]*15/100;"0")).

    Grazie ancora, solo non ci sarei riuscito mai.
  • Re: Formula

    Stiamo parlando di un semplice concetto matematico. x compreso fra 15000 e 20000 si esprime così:
    15000<x<20000

    Piuttosto, ho fatto un test. Funziona anche a me senza le virgolette, ma non restituisce valori coerenti se [IMP30] è maggiore di 20000 (continua a calcolare 15% lo stesso)...non riesco a venirne a capo.
  • Re: Formula

    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000 And [IMP30]<20000;[IMP30]*15/100;0))
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]Between 15000 And 20000;[IMP30]*15/100;0))

    Entrambe queste sintassi funzionano anche per i valori maggiori di 20000 restituendo 0.
  • Re: Formula

    Se ho ben capito ti restituisce il 15% anche con un valore minore o uguale a 15000 giusto?
    Strano a me funziona perfettamente così:
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000<20000;[IMP30]*15/100;"0")).
    Sotto i 15000 restituisce un valore pari al 10% e oltre i 15000 ma entro o uguale ai 20000 restituisce un valore pari al 15%.
    Dalla mia scarsissima conoscenza di access mi permetto di dirti di verificare bene se hai inserito i simboli "><" in maniera giusta. Deve funzionare.
  • Re: Formula

    OsvaldoLaviosa ha scritto:


    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000 And [IMP30]<20000;[IMP30]*15/100;0))
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]Between 15000 And 20000;[IMP30]*15/100;0))

    Tato ha scritto:


    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000<20000;[IMP30]*15/100;"0")).
    Ho fatto tutti e 3 i test:
    Le prime 2 funzionano pienamente.
    La terza, se hai un valore maggiore di 20000, non restituisce 0. Mi pare di capire che non hai provato a testare questa ipotesi.
  • Re: Formula

    Fatto e hai ragione. In effetti mi restituisce "0" solo se IMP30 mi da come valore "0"; cosa giusta.
    Fermorestando l'esattezza delle altre due possibilità che mi hai sottoposto, è perfetta comunque così. A me non serve che superato un dato valore mi dia "0"; mi serve che anche oltre un certo valore continui a calcolare una certa percentuale. Ma grazie a te e a questo fantastico Forum ora ho capito come fare.
    Faccio comunque tesoro di quanto mi hai inviato

    Grazie per l'infinita pazienza.

    Tatò
  • Re: Formula

    Gentile Osvaldo una precisazione è fondamentale anche per tutti gli utenti.
    Se alla mia formula:
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000<20000;[IMP30]*15/100;"0")), aggiungo a seguire dei valori tipo: >20000<40000, questa non funziona; non capisco il perchè.
    Concludendo, da prove effettuate, quella più esatta, e da te comunicatami è:
    =IIf([IMP30]<=15000;[IMP30]*10/100;IIf([IMP30]>15000 And [IMP30]<20000;[IMP30]*15/100;0)).
    Con questa, anche aggiungendo dei valori da calcolare funziona perfettamente.

    Ancora grazie
  • Re: Formula

    Tato ha scritto:


    [IMP30]>15000<20000
    Secondo me questo concetto è errato sintatticamente. Access probabilmente ne interpreta solo la prima parte [IMP30]>15000 e restituisce ovvi risultati di conseguenza.
Devi accedere o registrarti per scrivere nel forum
12 risposte