Condividi:        

Sconto multiplo

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

Sconto multiplo

Postdi nicola_na78 » 20/02/23 22:09

Buona sera,
Non riesco a venirne fuori con il calcolo degli sconti multipli.
Di seguito l’esempio: nella colonna "E" ho degli sconti tipo 10+20+5 che in percentuale a scalare corrisponde a 31.6%.
Esiste un modo (formula o vba) per convertire quel 10+20+5 in 31.6?

Ringrazio anticipatamente
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Sponsor
 

Re: Sconto multiplo

Postdi wallace&gromit » 21/02/23 11:09

Ciao,
avere in una sola cella 10+20+5 non è molto razionale.
Se invece hai in E2: 10, F2: 20 e G2: 5, tutti in formato percentuale, puoi applicare questa formula (assumendo che il valore originale sia in A2):
Codice: Seleziona tutto
=A2*(1-E2)*(1-F2)*(1-G2)

Ottieni il valore di A2 con la deduzione degli sconti progressivi.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: Sconto multiplo

Postdi nicola_na78 » 21/02/23 12:23

Ciao wallace&gromit,
grazie x la risposta. purtroppo lo sconto viene esportato dal gestionale direttamente in un unica cella, e per tutti gli articoli non ha la stessa lunghezza.
per esempio la cella E2 potrebbe avere lo sconto10+20+5, mentre quella successiva 20+5+12+12+15 e così via.

Avrei bisogno di una formula o macro che riesca ad intercettare il segno "+" e quindi trovare lo sconto totale a scalare in modo poi da moltiplicarlo x il prezzo.


Grazie ancora
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Sconto multiplo

Postdi Anthony47 » 21/02/23 13:06

Nell'ipotesi descritta potresti provare questa funzione:
Codice: Seleziona tutto
Function ScontoMultiplo(ByRef myCell As Range, Optional tTipo As Boolean = False) As Single
Dim mySplit, I As Long, CumDisc As Single
'
CumDisc = 1
mySplit = Split("0+" & Replace(Replace(myCell.Value, "%", ""), " ", ""), "+", , vbTextCompare)
For I = 1 To UBound(mySplit)
    If CSng("0" & mySplit(I)) >= 1 Then
        CumDisc = CumDisc * (1 - CSng(mySplit(I)) / 100)
    Else
        CumDisc = CumDisc * (1 - CSng("0" & mySplit(I)))
    End If
Next I
If tTipo Then
    ScontoMultiplo = CumDisc
Else
    ScontoMultiplo = 1 - CumDisc
End If
End Function

Metti il codice in un modulo standard del tuo vba, poi avrai a disposizione la funzione ScontoMultiplo con questa sintassi
Codice: Seleziona tutto
ScontoMultiplo(GliSconti [;TipoRestituito])

GliSconti puo' essere una stringa o il riferimento a una cella che contiene un numero o una stringa
TipoRestituito puo' essere 0 (o essere omesso) e la funzione restituisce lo Sconto, come numero decimale;
oppure puo' essere 1 e verra' restituito il complemento allo sconto, cioe' la quota prezzo residuale, come numero decimale.

Nell'immagine vedi come ho usato la funzione per calcolare il prezzo da applicare (colonna G, opzione "TipoRestituito=1") mentre in colonna F ho calcolato lo sconto applicato (opzione "TipoRestituito omesso")

Immagine

La colonna F ovviamente nell'esempio potrebbe anche essere omessa, visto che il prezzo scontato lo calcolo in colonna G usando la funzione ScontoMultiplo
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sconto multiplo

Postdi nicola_na78 » 21/02/23 14:17

Anthony47, sei un grande... come sempre!!!

è perfetta, funziona alla grande. era quello che volevo che facesse... :-)

la funzione la combino nel seguente modo e ho lo sconto che mi serviva:

=ScontoMultiplo(E2;3)*100)-100

Grazie ancora

RISOLTO.
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Sconto multiplo

Postdi Anthony47 » 21/02/23 16:26

Forse la tua formula e'
Codice: Seleziona tutto
=ScontoMultiplo(E2;3)*100-100
(c'era una parentesi di troppo)

E probabilmente e' semplificabile in
Codice: Seleziona tutto
=-ScontoMultiplo(E2)


Curiosità: il secondo parametro ho scritto che puo' valere 0 (il valore di default) oppure 1: perche' hai usato 3 (che comunque ha lo stesso significato di 1)?
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sconto multiplo

Postdi nicola_na78 » 21/02/23 17:25

Curiosità: il secondo parametro ho scritto che puo' valere 0 (il valore di default) oppure 1: perche' hai usato 3 (che comunque ha lo stesso significato di 1)
Ho messo 3 per avere l'arrotondamento a 3 decimali dopo la ",".
con 1 arrotonda a due decimali.

Grazie ancora.

Buona serata ;)
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26


Torna a Applicazioni Office Windows


Topic correlati a "Sconto multiplo":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti