Condividi:        

Excel - Come fare il seguente?

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

Excel - Come fare il seguente?

Postdi Stormjohn » 31/05/21 15:32

Salve ragazzi, è il mio primo post qui e spero di trovarmi bene :D ; tutto bene?

Avrei un problemino con una cosa su excel, praticamente dovrei calcolare in maniera automatica dei prezzi per alcuni clienti in un Hotel, e i prezzi sono giornalieri, divisi in periodi:
-Periodo A: 01/05 - 11/06, prezzo = 50€
-Periodo B: 12/06 - 25/06 , prezzo = 55€
-Periodo C: 26/06 - 09/07, prezzo = 60€

Ora, se un cliente dovesse venire dal 08/06 al 01/07, come posso fare tramite una formula, il calcolo? in modo tale da replicarlo per ogni cliente..

Vi ringrazio in anticipo, vi lascio un link con un immagine di excel, e la tabella dei prezzi :D

https://ibb.co/w7hxdvP
Stormjohn
Newbie
 
Post: 4
Iscritto il: 31/05/21 15:23

Sponsor
 

Re: Excel - Come fare il seguente?

Postdi Anthony47 » 31/05/21 16:19

Intanto Benvenuto nel forum

Non fare la tabellina dei prezzi come l'hai pensata ma in una tabella di questo tipo:
Immagine
La prima colonna indica "a partire da questa data"; la seconda indica "la tariffa da quella data fino alla prossima fascia". Io ho usato S2:T20

Ora se hai una data in B2, puoi ottenere la tariffa relativa a quella data usando cerca.vert:
Codice: Seleziona tutto
=CERCA.VERT(B2;$S$2:$T$20;2)


Ovviamente hai un problema se la data di permanenza capita a cavallo di due fasce; in questo caso se vuoi calcolare la tariffa complessiva come somma delle tariffe giornaliere dovrai usare una formula che cerca la tariffa per tutte le giornate e le somma. Ad esempio se la data di checkin e' in B2 e la data di checkout e' in B3 puoi usare la formula
Codice: Seleziona tutto
=SOMMA(CERCA.VERT(RIF.RIGA(INDIRETTO("A"&B2&":A"&B3-1));$S$1:$T$10;2))


Se non hai Office 365 allora dovrai confermare la formula con la combinazione Contr-Maiusc-Enter, non il solo Enter

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - Come fare il seguente?

Postdi Stormjohn » 31/05/21 16:30

Grazie mille per il supporto, ho office 2013, e provando a fare sia enter, sia CTRL+SHIFT+ENTER mi rilascia #N/D:
https://ibb.co/LS4xhyV
Stormjohn
Newbie
 
Post: 4
Iscritto il: 31/05/21 15:23

Re: Excel - Come fare il seguente?

Postdi Anthony47 » 31/05/21 18:07

ho office 2013, e provando a fare sia enter, sia CTRL+SHIFT+ENTER mi rilascia #N/D
E ci credo: nella tabella usi A-B-C invece che le date...
Devi creare una tabella come quella che ti ho fatto vedere: Data (a partire da) /Tariffa

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - Come fare il seguente?

Postdi Stormjohn » 31/05/21 19:51

Ah ok ora funziona, anche se ottengo un problemino:

-Se seleziono due celle ed eseguo il codice con CTRL + SHIFT + ENTER mi da il risultato (1270€), mentre se seleziono solo una cella, con la stessa combinazione di tasti di prima, mi da 50€... Forse selezionando due celle, identifica come se fosse una matrice? Come posso far apparire il risultato (1270) in una sola cella?
Stormjohn
Newbie
 
Post: 4
Iscritto il: 31/05/21 15:23

Re: Excel - Come fare il seguente?

Postdi Anthony47 » 01/06/21 07:52

Quale versione di Office usi?
Intanto prova a usare la formula confermandola col solo Enter e dì come si comporta

Ciao+
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - Come fare il seguente?

Postdi Stormjohn » 01/06/21 08:52

Anthony47 ha scritto:Quale versione di Office usi?
Intanto prova a usare la formula confermandola col solo Enter e dì come si comporta

Ciao+


Ciao, uso office 2013, se premo solo enter mi rilascia 50, stessa cosa se premo CTRL SHIFT ENTER
Stormjohn
Newbie
 
Post: 4
Iscritto il: 31/05/21 15:23

Re: Excel - Come fare il seguente?

Postdi Anthony47 » 01/06/21 14:13

Non sono riuscito a risolvere lo strano fenomeno per cui il risultato corretto si ottiene solo selezionando piu' celle; quindi cambiamo approccio e usiamo una "funzione personalizzata".
1) Da Excel, premi Alt-F11 per aprire il tuo editor delle macro
2) Menu /Inserisci /Modulo, per inserire un "modulo macro" vuoto
3) In questo modulo incolla il seguente codice:
Codice: Seleziona tutto
Function QuotaTot(ByVal CkIn As Date, CkOut As Date, ByRef Param As Range) As Single
Dim xDate, xFare, I As Long, AllFare As Single
Dim myMatch
'
xDate = Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Index(Param, 0, 1))
For I = CkIn To CkOut - 1
    myMatch = Application.Match(I, xDate)
    AllFare = AllFare + Param.Cells(myMatch, 2).Value
Next I
QuotaTot = AllFare
End Function

Questo ti creera' la funzione QuotaTot, la cui sintassi e':
Codice: Seleziona tutto
QuotaTot(Data di Checkin; Data di CheckOut; TabellaParametriTariffe)

In TabellaParametriTariffe, la prima colonna sono date in ordine rigorosamente crescente e in seconda colonna sono le tariffe che si applicano a partire da quella data.


Quindi, con gli esempi fatti finora, la formula che potrai usare sara'
Codice: Seleziona tutto
=QuotaTot(B2;B3;$S$1:$T$10)


Il file deve essere salvato in formato ".xlsm"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Excel - Come fare il seguente?":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti