Sviluppare funzionalita su Microsoft Office con VBA Calcolo consumi acqua in m^3

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

    Asker19
    Partecipante

      Salve a tutti, mi sono iscritto al forum perchè credo mi possiate dare un aiuto. Vorrei creare su Excel una formula, meglio macro che mi consenta di attribuire i mi consenta di attribuire a ciascuna fascia di consumo di acqua, i m^3 consumati da un utente, in base ai giorni. Ad esempio se un utente consuma 30 m^3 in 80 giorni devo distribuire i m^3 tra le seguenti fasce di consumo annue : 1a da 0-30 m^3 annui; 2a da 31-90 m^3 annui; 3a da 91-130 m^3 annui; 4a oltre 130 m^3 annui. Che formula posso utilizzare per il calcolo?  Facendo riferimento all'esempio sopra il calcolo sarebbe: divido 30( numero prima fascia) per 365 ( giorni dell'anno perchè le fasce sono riferite all'anno) e moltiplica per 80 (giorni di riferimento della bolletta) =6,57~7 m^3 alla prima fascia, poi divido 90 ( max ampiezza m^3 seconda fascia) per 365, moltiplicato per 80 =19,72-6,57 (mc^3 prima fascia) =13,15 mc^3 alla seconda fascia, mentre alla terza fascia verrebbero applicati i restanti m^3 cioè 10. Vi dico che se fossero stati 26 m^3 in 92 gg la ripartizione tra le fasce annue, deve risultare 1f=8m^3, 2f=15m^3, 3f=3m^3. 

      Inizialmente ho provato con formula se ma diventa impossibile. Come posso ripartire come nell'esempio con Excel? 

      edit by VF: ho tolto la sottolineatura a tutto il testo che era stata impostata presumo per errore

      #6989 Score: 0 | Risposta

      albatros54
      Moderatore
        81 pts

        Allora ho creato due UDF, che ti posto, incolla il codice in un modulo del VBA.Inserisci la funzione che ti interessa in una cella, è inserisci nell'ordine i giorni dell'anno e dopo i metricubi consumati, nella cella ti ritornera il valore riferito a 30 giorni o 90 giorni.

        `Option Explicit
        Public Const trenta = 30 / 365
        Public Const novanta = 90 / 365
        
        Public Function metricubi90(giorni As Long, consumo As Long) As Double
        Dim consumonovanta As Double
        Dim consumotrenta As Double
        consumotrenta = giorni * trenta
        consumonovanta = (giorni * novanta) - consumotrenta
        metricubi90 = consumonovanta
        End Function
        
        Public Function metricubi30(giorni As Long, consumo As Long) As Double
        Dim consumotrenta As Double
        consumotrenta = giorni * trenta
        metricubi30 = consumotrenta
        End Function
        `

         

        Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
        Sempre il mare, uomo libero, amerai!
        ( Charles Baudelaire )
        #7028 Score: 0 | Risposta

        Asker19
        Partecipante

          Per la sottolineatura è involontaria... 🙂 

          Albatros54: ti ringrazio per la risposta, ma non ho capito come procedere. Come devo inserire i giorni dell'anno e i m^3 consumati? Potresti farmi capire meglio, magari se è possibile con un print screen di Excel e spiegandomi i passaggi?

          Inserendo i giorni dell'anno in Excel, l'esempio è applicabile anche ai casi in cui il consumo fosse riferito anche a giorni diversi da 30 o 90 come nl tuo esempi?

          Considerando l'esempio che ti ho riportato nella richiesta, utilizzando il codice che mi hai fornito i risultati tornerebbero?

           

           

          #7029 Score: 0 | Risposta

          albatros54
          Moderatore
            81 pts

            il consumo fosse riferito anche a giorni diversi da 30 o 90 come nl tuo esempi

            30 e 90 non sono giorni, ma delle costanti del range di pagamento fino a 30 mc e fino a 90mc

            ti posto un videotutorial come fare.

            ciao

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            Allegati:
            You must be logged in to view attached files.
            #7036 Score: 0 | Risposta

            Asker19
            Partecipante

              Perfetto, ho capito come impostarla. Ti aggiungo inoltre che ho utilizzato una funzione se per distribuire correttamente i m^3 tra le fasce. Utilizzando il VBA esiste un modo per distribuire equamente i m^3 tra le varie fasce? Mi spiego meglio: io ho aggiunto un altro codice, sulla falsa riga di quello impostato da te, per i consumi fino a 130 m^3, mentre per i consumi oltre i 130 m^3 faccio la differenza tra i m^3 consumati dall'utente ed i m^3 distribuiti tra le varie fasce.

              Se ad esempio avessi un consumo di 27 m^3 in 92 giorni, utilizzando il codice come impostato da te ed aggiungendo quello per i consumi fino a 130 m^3, come risultato mi verrebbe: 8 m^3 1 fascia; 15 m^3 2 fascia; 10 m^3 3 fascia. Sommandoli danno 33 m^2 diverso da 27 m^3 consumati.  In questo caso il codice avrebbe dovuto fermarsi alla 3 fascia facendo la differenza tra 27-8-15= 4 m^3. E' possibile far si che il calcolo si arresti alla fascia corretta senza andare oltre i m^3 consumati?

               

              #7037 Score: 0 | Risposta

              zer0kelvin
              Partecipante
                5 pts

                Ciao a tutti.

                Se non vuoi disturbare il VBA si può fare anche con formule.

                Per comodità mia, nelle formule ho usato dei nomi definiti.

                Inserendo in A8 e B8 il consumo e i relativi giorni, si ottengono i consumi divisi per fascia.

                Allego file di esempio

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

                Asker19
                Partecipante

                  zer0kelvin: ho provato ad impostare secondo la tua formula e funziona perfettamente.

                  albatros54: anche la tua impostazione mi torna, l'unica cosa ho provato ad impostarla come da tue indicazioni ma risulta quasi impossibile far applicare correttamente i consumi tra le varie fasce utilizzando vba. Secondo l'impostazione da te fornita ed aggiungendo i dati per consumi fino a 130 mc, non torna.

                  Comunque vi ringrazio per la disponibilità e per l'aiuto

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Calcolo consumi acqua in m^3
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: