Excel e gli applicativi Microsoft Office Calcolo imposta di soggiorno

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 80 totali)
  • Autore
    Articoli
  • #38202 Score: 0 | Risposta

    FROST220684
    Partecipante

      Ciao a tutti, ho creato questo file che mi serve per calcolare la tassa di soggiorno degli ospiti pernottanti in hotel.

      Nel file c'è anche una descrizione di quello che dovrebbe fare e le regole di imputazione della tassa.

      Il problema lo ho naturalmente sul calcolo totale e soprattutto nel calcolo dell'imputazione parziale della tassa ecco alcuni esempi:

      Regola imputazione:

      1. Pagano la tassa gli ospiti dai 12 ai 65 anni compiuti (no 11; no 66) (si parziale)

      2. Max notti imputabili: 15 notti

      importo tassa: 1,50 € a notte

      Data soggiorno: dal 07/06/2023 al 15/06/2023. 

      Data di nascita ospite: 10/06/1957

      il totale della tassa in questo esempio è 4,50. Perchè pagherebbe dal 07/06 al 09/06 in quanto ha 65 anni mentre non pagherebbe dal 10/06 al 15/06 in quanto ha 66 anni.

      ho provato un po di formule ma non sono riuscito spero che riusciate ad aiutarmi e grazie in anticipo

      Allegati:
      You must be logged in to view attached files.
      #38215 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Io ci sto provando, giurin giurello 😀

        ma naturalmente è nota la mia difficoltà con le formule... non arrivo ai livelli di antipatia mostrati da altri utenti però diciamo che non ci vado matto!   

        Presumo niente VBA, tanto per rendermi la vita difficile, e quindi in attesa di qualche buon Mastro Giostraio delle Formulae continuo a provarci. Magari più tardi riesco a postare qualcosa   

        #38217 Score: 0 | Risposta

        gianfranco55
        Partecipante
          91 pts

          ciao

          sto strutturando le formule

          questa sera spero riuscire a postarle

          uso DATA.DIFF()

          vecchio Frac provaci è un bel puzzle da fare  

          #38219 Score: 0 | Risposta

          FROST220684
          Partecipante

            grazie a tuttiiiii

            #38221 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              Immagino che bisogna innestare diversi casi di DATA.DIFF per trovare lo spartiacque tra data di riferimento e date di checkin-checkout. Forse ci sono formule magiche delle nuove versioni che aiutano di più... Frost su che versione di Excel hai detto che stai lavorando...?   

              #38223 Score: 0 | Risposta

              FROST220684
              Partecipante

                office 365 su pc personale su altri pc sono diversi dipende

                 

                io il DATA.DIFF l'ho provato ma mi da errore e non sono riuscito a risolvere ahahahaha

                #38227 Score: 0 | Risposta

                Aldo Ercolini
                Partecipante
                  19 pts

                  Allego una mia soluzione.

                  Anche io come Francesco sono allergico alle formule, comunque ci ho provato.

                  Sono pronto agli insulti      

                  Allegati:
                  You must be logged in to view attached files.
                  #38229 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Non ci riesco. Mi è venuto mal di testa   
                    Con poche righe di codice però ho trovato questi risultati (in colonna G) 🙂

                    Non ho testato a fondo tutti i casi... per esempio temo succeda qualcosa di sbagliato con la mia macro quando check-in e check-out sono a cavallo di anno.

                    #38230 Score: 0 | Risposta

                    gianfranco55
                    Partecipante
                      91 pts

                      ciao

                      provami questa

                      =SE(E(DATA.DIFF($E2;B$2;"Y")=12;DATA.DIFF($E2;A$2;"Y")<12);LET(D;DATA(ANNO($B$2);MESE($E2);GIORNO($E2));SE(D=MEDIANA(D;$A$2;$B$2);($C$2+(DATA.DIFF($E2;A$2;"Yd")-365))*$J$1));SE(O($F2<12;$F2>65);"";$C$2*$J$1))

                      se va bene

                      vale solo per i 12 poi si deve fare per il 65

                      #38231 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        Aldo Ercolini ha scritto:

                        Sono pronto agli insulti

                        Anzi funziona molto meglio della mia prova (che sbaglia a conteggiare per esempio la riga 5, ma vedo altri errori)

                        #38232 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          gianfranco55 ha scritto:

                          provami questa

                          Peccato che io non posso provarla... la funzione LET non è ancora stata inventata per il mio povero Excel 2013   

                          #38233 Score: 0 | Risposta

                          FROST220684
                          Partecipante

                            Ho scaricato il file e provato a capire come fare i calcoli ma c'ho capito ben poco anche perchè fai conto che la date di nascità vengono cambiate continuamente per fare il calcolo per ogni preventivo.

                            Quello che serve a me e che lui capisca:

                            1. Qaunti anni ha alla data del check-in (varie ipotesi: non la paga, la paga, la paga ma solo per alcuni giorni in base all'età)

                            2. mi faccia il totale

                            poi io cambio la data di soggiorno e le date di nascità e lui fa il calcolo di nuovo.

                            cmq non te ne faccio sicuramente una colpa non c'ho capito niente nemmeno io di come si deve comportare ahhahah grazie aldo sei stato super gentile

                            #38234 Score: 0 | Risposta

                            FROST220684
                            Partecipante

                              gianfranco55 ha scritto:

                              ciao

                              dove devo metterla questa formula?

                              #38235 Score: 0 | Risposta

                              gianfranco55
                              Partecipante
                                91 pts

                                ciao

                                dove vuoi io l'ho messa in g2 e trascinata in basso

                                ricorda che valuta fino a 12 per i 65 solo se va bene 

                                #38236 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  272 pts

                                  Ma i valori giusti quali sarebbero? Io ho intanto aggiustato il mio codice perchè mi sono intestardito e ottengo questi valori 🙂

                                  #38237 Score: 0 | Risposta

                                  FROST220684
                                  Partecipante

                                    vecchio frac ha scritto:

                                    Ma i valori giusti quali sarebbero? Io ho intanto aggiustato il mio codice perchè mi sono intestardito e ottengo questi valori 🙂

                                    1 problema: riproponete più volte la data check-in e check-out ma non serve gli ospiti in colonna fanno parte tutti della stessa camera

                                    2 problema: la colonna imposta di soggiorno a notte l'avete trasformata in un totale singolo

                                    3. secondo me vecchio frac ha beccato tutto correttamente i risultati sono corretti, l'unica cosa da correggere è la colonna check-in e check-out che non deve essere ripetuta 100 volte basta 1 sola riga. la colonna imposta di soggiorno a notte diventa imposta di soggiorno ospite per l'intero soggiorno 

                                    #38240 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      272 pts

                                      Bè ma il tuo file originale era così, e così è stato preso ad esempio da tutti 🙂
                                      E' fuorviante che la cella F11 sia in verde (perché sembra che si debba fare il totale lì).
                                      Ok per dire la mia in VBA allego il codice che ho utilizzato. Naturalmente non tiene conto delle tue ultime precisazioni, ma tanto era solo a scopo illustrativo (per esempio i range sarebbero da aggiustare per renderli dinamici e non legati allo specchietto dell'esempio). 

                                      Ma so che tu hai tanta voglia di studiare e imparare VBA da solo, quindi SO che ti metterai d'impegno per fare le opportune modifiche     

                                      Option Explicit
                                      
                                      Sub test()
                                      Dim cell As Range
                                      Dim data_nasc As Date
                                      Dim check_out As Date
                                      Dim check_in As Date
                                      Dim eta_al_check_in As Integer
                                      Dim tassa_totale As Single
                                      Dim totale_complessivo As Single
                                      Dim d As Date
                                      
                                          For Each cell In Range("E2:E10")
                                              tassa_totale = 0
                                              check_in = DateSerial(Year(Date), Month(Cells(cell.Row, 1)), Day(Cells(cell.Row, 1)))
                                              check_out = DateSerial(Year(Date), Month(Cells(cell.Row, 2)), Day(Cells(cell.Row, 2)))
                                              data_nasc = DateSerial(Year(Date), Month(cell), Day(cell))
                                              eta_al_check_in = Cells(cell.Row, 6)
                                              
                                              For d = check_in To check_out - 1
                                                  tassa_totale = tassa_totale + 1.5
                                                  If eta_al_check_in < 12 Or eta_al_check_in > 66 Then
                                                      tassa_totale = tassa_totale - 1.5
                                                  End If
                                                  If d < data_nasc And eta_al_check_in = 12 Then
                                                      tassa_totale = tassa_totale - 1.5
                                                  End If
                                                  If d >= data_nasc And eta_al_check_in = 66 Then
                                                      tassa_totale = tassa_totale - 1.5
                                                  End If
                                              Next
                                              
                                              Cells(cell.Row, 7) = tassa_totale
                                              totale_complessivo = totale_complessivo + tassa_totale
                                          Next
                                          Range("F11") = totale_complessivo
                                      End Sub
                                      
                                      #38241 Score: 0 | Risposta

                                      gianfranco55
                                      Partecipante
                                        91 pts

                                        ciao

                                        veccchio trentino

                                        i tuoi conti non mi tornano

                                        riga 3 dell'immagine deve essere vuota

                                        riga 7 deve essere 4.5

                                         

                                        ecco la mia formula dovrebbe andare anche da te

                                        =SE(O(F2>65;F2<12);"";SE(DATA(ANNO($B$2);MESE($E2);GIORNO($E2))=MEDIANA(DATA(ANNO($B$2);MESE($E2);GIORNO($E2));$A$2;$B$2);SE($F2=12;($C$2-(GIORNO(E2)-GIORNO($A$2)))*$J$1;($C$2+(GIORNO(E2)-GIORNO($B$2)))*$J$1);SE($E2>$B$2;"";$C$2*$J$1)))

                                        una precisazione in F2 da trascinare in basso

                                        =ARROTONDA(($B$2-E2)/365;0)

                                        Allegati:
                                        You must be logged in to view attached files.
                                        #38243 Score: 0 | Risposta

                                        FROST220684
                                        Partecipante

                                          Ciao Gianfranco55 intanto grazie dell'aiuto. 

                                          Per quanto riguarda le righe segnalate a me risultano corrette e ti spiego.

                                          Riga 3: è nato nel 2009 c'ho vuol dire che quando entra in hotel ha più di 12 anni. Regola la tassa si paga dai 12 ai 65 anni compiuti. Quindi paga la tassa per tutti i giorni tot 12 euro

                                          Riga 7: 2010 nascita ha più di 12 anni stesso discorso.

                                          Insomma il problema del computo parziale si ha solo nel caso dei nati nel 1957 (66 anni nn si paga)e nel 2011 (dai 12 anni si paga) che potrebbero compiere gli anni proprio nel periodo di soggiorno e quindi pagare solo una parte della tassa perche per alcuni giorni rientrano nell'età mentre in altri no. Non so se sono stato chiaro.

                                          A me non interessa come è strutturato il file sentitevi liberi di modificarlo è il risultato che mi fa risparmiare tempo.

                                          Le regole essenziali come format sono:

                                          1 cella: check-in

                                          2 cella: check out

                                          3 colonna: tabella dove inserire le date di nascita degli ospiti della camera

                                          4 colonna: tot tassa soggiorno per ospite singolo

                                          5 cella: totale tassa soggiorno camera

                                          Appena riesco provo i vari consigli e vi dico. 

                                          #38244 Score: 0 | Risposta

                                          FROST220684
                                          Partecipante

                                            vecchio frac ha scritto:

                                            Bè ma il tuo file originale era così, e così è stato preso ad esempio da tutti 🙂 E' fuorviante che la cella F11 sia in verde (perché sembra che si debba fare il totale lì).
                                            Ok per dire la mia in VBA allego il codice che ho utilizzato. Naturalmente non tiene conto delle tue ultime precisazioni, ma tanto era solo a scopo illustrativo (per esempio i range sarebbero da aggiustare per renderli dinamici e non legati allo specchietto dell'esempio). 

                                            Sei proprio cattivello mettermi così in difficoltà addirittura dinamici non possono stare fermi? Ahahhaha

                                            #38245 Score: 0 | Risposta

                                            vecchio frac
                                            Senior Moderator
                                              272 pts

                                              gianfranco55 ha scritto:

                                              ciao

                                              veccchio trentino

                                              gianfranco55 ha scritto:

                                              riga 3 dell'immagine deve essere vuota

                                              riga 7 deve essere 4.5

                                              Ecco il mio ragionamento.

                                              Se parliamo delle righe di Excel e non dell'intervallo, la riga 3 corrisponde alla data di nascita 10/06/1957 e la riga 7 alla data 10/06/1958. Il primo ospite deve pagare dal 07/06/2023 (giorno di arrivo) fino al 09/06/2023 (ultimo giorno in cui avrà 65 anni) per un totale di 1,50*3 giorni = 4,50.
                                              Il secondo ospite paga tutto il soggiorno (1,50*8 giorni = 12,00) perché compie 65 anni durante la sua permanenza.

                                              gianfranco55 ha scritto:

                                              ecco la mia formula dovrebbe andare anche da te

                                              Grazie. Adesso verifico 🙂

                                              #38246 Score: 0 | Risposta

                                              FROST220684
                                              Partecipante

                                                vecchio frac ha scritto:

                                                Ecco il mio ragionamento.

                                                Se parliamo delle righe di Excel e non dell'intervallo, la riga 3 corrisponde alla data di nascita 10/06/1957 e la riga 7 alla data 10/06/1958. Il primo ospite deve pagare dal 07/06/2023 (giorno di arrivo) fino al 09/06/2023 (ultimo giorno in cui avrà 65 anni) per un totale di 1,50*3 giorni = 4,50. Il secondo ospite paga tutto il soggiorno (1,50*8 giorni = 12,00) perché compie 65 anni durante la sua permanenza.

                                                Ragionamento corretto non ho capito la parte dell'intervallo 

                                                #38247 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  272 pts

                                                  FROST220684 ha scritto:

                                                  non ho capito la parte dell'intervallo 

                                                  Stavo riflettendo sul riferimento, assoluto o relativo, della tabella in esame.

                                                  Le righe di cui parliamo sono quelle fisiche di Excel? (quelle automatiche, numerate da 1 in poi nella barra laterale sinistra)
                                                  O parliamo delle righe dell'intervallo? (cioè ogni range, detto intervallo in italiano, è una tabella di tot righe per tot colonne, naturalmente non sono numerate in automatico però ci si riferisce ad esse come se lo fossero).

                                                  Nell'immagine sottostante:

                                                  se consideriamo l'intervallo di celle B7:C10, l'intervallo inizia alla riga fisica di Excel n° 7, ma quella riga è la riga relativa n° 1 dell'intervallo stesso (riferimento assoluto vs riferimento relativo).

                                                  #38252 Score: 0 | Risposta

                                                  Aldo Ercolini
                                                  Partecipante
                                                    19 pts

                                                    FROST220684 ha scritto:

                                                    Le regole essenziali come format sono:

                                                    1 cella: check-in

                                                    2 cella: check out

                                                    3 colonna: tabella dove inserire le date di nascita degli ospiti della camera

                                                    4 colonna: tot tassa soggiorno per ospite singolo

                                                    5 cella: totale tassa soggiorno camera

                                                    Appena riesco provo i vari consigli e vi dico. 

                                                    Allego il file riveduto e corretto che fa quello che chiedi.

                                                    Unico problema, e qui ci vuole il mago delle formule, e' quando devi aggiungere una riga, volendo tu fisse A2 B2 C2 K1

                                                    Es devi aggiungere la riga 11. quando copi la formula da H10 in H11 excell aggiorna i riferimenti lle celle e A2 diventa A3, B2 diventaB3 e cosi' via.

                                                    Allegati:
                                                    You must be logged in to view attached files.
                                                    #38254 Score: 0 | Risposta

                                                    vecchio frac
                                                    Senior Moderator
                                                      272 pts

                                                      Ciao Aldo, perchè per l'utente della seconda riga, che ha data nascita 10/06/1957, ti risulta un pagamento dovuto di 12 euro? L'ospite soggiorna dal 7 al 15 giugno e ha 65 anni fino al 10 giugno, quindi paga la tassa dal 7 al 9 compresi. Poi ne compie 66 e viene esentato dal pagamento.

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 80 totali)
                                                    Rispondi a: Calcolo imposta di soggiorno
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: