Excel e gli applicativi Microsoft Office Spalmare dati tra colonne e ricerca prima cella vuota

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

    danros
    Partecipante

      buon giorno

      Mi trovo a dover gestire il consumo di carburante di una cava. Solitamente eseguo la lettura del livello cisterna ogni giorno ma in periodi festivi o di ferie le letture non vengono eseguite.

      Sono a conoscenza delle ore di lavoro delle macchine in quanto il dato è monitorato e loggato ogni quarto d'ora.

       

      Sostanzialmente mi trovo con la seguente tabella, in cui non ho fatto la lettura di livello venerdì, sabato e domenica.

      Devo ricostruire i litri che ho prelevato dal serbatoio considerando le ore delle macchine: 180-250 = 700lt e la variabile che mi incasina è il numero di buchi nella colonna litri s. in quanto potrei stare anche 7gg senza leggere il livello. Con l'esempio sotto basterebbe fare le proporzioni ma mi trovo a dover "trovare andando all'indietro (dal basso all'altro) la prima cella Non Vuota cui fare riferimento per il calcolo della differenza dei litri.

      tabella
      Gradirei suggerimenti che permettessero di implementare su unico foglio più colonne calcolate alla stessa maniera. Ho molti altri dati che vengono estrapolati con lo stesso metodo.

       

      Grazie a chi mi potrà aiutare.

       

      Daniele R.

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

      albatros54
      Moderatore
        88 pts

        A parte il fatto che sei stato poco chiaro.L'immagine che hai allegato non rispecchia quanto risulta dal file allegato.Nel file allegato con i dati che ci sono che cosa dobbiamo ottenere? Cerca di essere piu chiaro

         

        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 )
        #6731 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Probabilmente l'immagine incollata nel post è il report in Word cui si riferisce il problema del calcolo, mentre nel file Excel ci sono i dati che arrivano in automatico, però il problema descritto in F16 è diverso anche perchè non c'è il criterio con cui si calcola il consumo. Attendiamo fiduciosi 🙂

          #6740 Score: 0 | Risposta

          danros
          Partecipante

            Avete ragione, ma nel primo post non riuscivo ad allegare la tabella vera quindi ho allegato un immagine di esempio.

            Parlando del file, cercando di spiegare l'esigenza:

            1. il 17/9 ho letto il serbatoio 1 e ricavato una giacenza di 3448. 

            2. il 14/9 avevo letto e ricavato giacenza di 10115 = nel weekend abbiamo consumato 6667 kg. producendo ogni giorno la stessa energia 23971. = è facile eseguire la distribuzione del consumo

            3. il 10/9 avevo eseguito altra lettura con risultato 21313 = consumo 11198 con produzioni diverse.

             

            la mia esigenza è quella di creare una funzione o formula che calcoli la somma dell'energia prodotta e la differenza di giacenza nelle "finestre" tra le letture. Mi deve poi spalmare il consumo in rapporto alla produzione. questo lavoro è da eseguire su tre serbatoi S1,S2,S3 uguali da cui può essere eseguito il prelievo indistintamente (io non so da dove hanno prelevato).

            Inoltre devo gestire i carichi eseguiti con auto botte. Il "dove" hanno caricato lo determino da differenza giacenza negativa. [hanno prelevato 3000 ma inserito 10000 = -7000]

             

            Grazie a chi mi sarà di aiuto.

            buon weekend

            #6741 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              Il concetto è meno nebuloso, ma ho ancora delle perplessità.

              Devi riempire le celle delle giacenza calcolando una media dei consumi? e quando i consumi variano, come si distribuisce la giacenza? oppure devi riempire le celle del consumo a carico dei serbatoi? c'è un criterio univoco?

              Mi piacerebbe rivedere questo file di esempio, ma compilato a mano per verificare un risultato atteso, per dedurne i criteri di compilazione e aiutarti a realizzare un automatismo.

              #6742 Score: 0 | Risposta

              Marius44
              Moderatore
                58 pts

                Ciao a  tutti

                Un tentativo (vedi allegato, zona in giallo) per vedere se ho capito bene.

                Il discorso si fa un po' più complicato quando ci sono i "rabbocchi", ma lo si vedrà in seguito se il mio ragionamento di partenza è corretto.

                Fai sapere. Ciao,

                Mario

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

                danros
                Partecipante

                  Marius44: Hai centrato in pieno quello che voglio ottenere il mio problema è fare l'esame a ritroso e trovare la prima cella non vuota per calcolare le diff di giacenza e la  somma delle produzioni.

                  X vecchio frac: in risposta alla tua

                  Cit. Devi riempire le celle delle giacenza calcolando una media dei consumi? e quando i consumi variano, come si distribuisce la giacenza.... 

                  A seconda della produzione spalmo i consumi. 

                  Grazie mille.  😚

                   

                   

                  #6751 Score: 0 | Risposta

                  Marius44
                  Moderatore
                    58 pts

                    Ciao

                    Se ti va bene con VBA, prova con questa macro (nel file allegato basta cliccare su CALCOLA).

                    Option Explicit
                    
                    Sub Calcolo_Consumo()
                    Dim ur As Long, i As Long, j As Long, k As Long
                    Dim gcz As Double, pdzsum As Double, pdzday As Double
                    Range("O:Q").ClearContents
                    ur = Cells(Rows.Count, 1).End(xlUp).Row
                    For i = 2 To ur - 1
                      gcz = Cells(i, 4).Value
                      If gcz > 0 Then
                        For j = i + 1 To ur
                          If Cells(j, 4) <> 0 Then
                            Cells(j, 15) = gcz - Cells(j, 4): pdzday = Cells(j, 15)
                            If Cells(j, 15) > 0 Then
                              pdzsum = Application.WorksheetFunction.Sum(Range(Cells(i + 1, 3), Cells(j, 3)))
                              Cells(j, 16) = pdzsum
                              For k = i + 1 To j
                                Cells(k, 17) = Cells(k, 3) / pdzsum * pdzday
                              Next k
                            End If
                            Exit For
                          End If
                        Next j
                      End If
                    Next i
                    Cells(1, 1).Select
                    MsgBox "Fatto ..."
                    End Sub
                    

                    Se tutto corretto, vedremo di migliorare la macro.

                    Fai sapere, ciao,

                    Mario

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

                    danros
                    Partecipante

                      Gentile Mario buon giorno

                      La macro funziona e fa quello che mi aspettavo. 

                      Ho alcuni problemi

                      1. La macro dovrebbe eseguire il calcolo in automatico quando compilo il valore della giacenza e solo per le celle non popolate. In pratica, se la settimana scorsa avesse calcolato le giacenze del weekend scorso, oggi , alla mia lettura, dovrebbe calcolarmi solo le celle che vanno da oggi a ultima calcolata/compilata. Infatti, Venerdì (d21) avevo giacenza e, compilando la giacenza di oggi (d26) vorrei che la macro non cancellasse i dati ma aggiungesse solo i dati necessari.

                      2. La macro dovrebbe calcolarmi i dati anche se ci sono valori consecutivi nella colonna D: popolando la cella d26 di oggi vedo che il calcolo si ferma alla cella q22 e riprende alla q20, presumo in quanto il risultato sarebbe stato 0 (serbatoio non scaricato)

                      3. Devo gestire in totale 3 serbatoi identici con lettura giacenza in contemporanea e la cui distribuzione è sempre legata alla produzione: basta replicare la macro per 3?

                      4. necessito, per altre zone del foglio di un calcolo semplice che è alla base della tua macro, ma mi servirebbe se fattibile in formula. Mi spiego: dovrei posizionarmi in cella F19 e controllare se la cella D19 ha dati. Se Si procedo a controllare a ritroso le delle della colonna D fino a trovare il primo valore (che nell'esempio si trova in D16) A Questo punto mi fermo ed eseguo la differenza.

                       

                      Grazie ancora.

                      Purtroppo la mia conoscenza del VBA è molto limitata e mi scuso fin d'ora se le mie risposte/domande sono banali.

                       

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

                      Marius44
                      Moderatore
                        58 pts

                        Ciao

                        Ho aggiunto il Foglio2 riportando i valori delle colonne A:E

                        Se cambi un dato nella col.D in automatico vengono eseguiti i calcoli "SOLO" fino alla lettura precedente e i risultati scritti nella col.G - La macro, inserita nel Modulo di Classe del Foglio interessato, è la seguente:

                        Option Explicit
                        
                        Private Sub Worksheet_Change(ByVal Target As Range)
                        Dim ur As Long, i As Long, j As Long, k As Long
                        Dim oGcz As Double, nGcz As Double, pdzsum As Double, pdzday As Double
                        If Not Intersect(Target, Range("D:D")) Is Nothing Then
                          If Target.Count > 1 Then Exit Sub
                          nGcz = Target.Value
                          For i = Target.Row - 1 To 2 Step -1
                            If Cells(i, 4) > 0 Then
                              oGcz = Cells(i, 4)
                              pdzsum = Application.WorksheetFunction.Sum(Range(Cells(i + 1, 3), Cells(Target.Row, 3)))
                              For j = i + 1 To Target.Row
                                Cells(j, 7) = (oGcz - nGcz) / pdzsum * Cells(j, 3)
                              Next j
                              Exit Sub
                            End If
                          Next i
                        End If
                        End Sub

                        Rispondo alle tue domande

                        Domanda 1 - Vedi file allegato

                        Domanda 2 -  Vedi file allegato

                        Domanda 3 - Si, si può replicate la macro di cui sopra ma i serbatoi vanno gestiti in Fogli separati (oppure occorrerebbe vedere la struttura del tuo file)

                        Domanda 4 - Non sono bravo con le formule (si potrebbe fare sempre con VBA); se proprio vuoi qualche formula bisogna rivolgersi ... ad altri Amici.

                         

                        Fai sapere. Ciao,

                        Mario

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

                        danros
                        Partecipante

                          Grazie. Funziona alla grande (domani da ufficio controllo meglio applicandola al file delle letture)

                          Cit: "Domanda 3 - Si, si può replicate la macro di cui sopra ma i serbatoi vanno gestiti in Fogli separati (oppure occorrerebbe vedere la struttura del tuo file)" : il file è molto semplice. Al momento ogni serbatoio ha 4 colonne: 1. livello letto / 2. kg calcolati in base alla densità / 3. temperatura fluido / 4. calcolo giacenza. In totale ho 12 colonne, io inserisco i dati solo su 6 (livello e temperatura). Se non è un ostacolo insormontabile o che non crea troppo caos preferirei mantenere tutto su un foglio al fine di avere facilità di "lettura" della situazione giacenze, ma lavorandoci un pò, essendo dati presenti su un file Excel online cui il foglio fa riferimento (le letture le faccio con lo smartphone e poi in uff ricopio i dati evitando di usare la carta) potrei spalmarli su tre sheet distinti….

                           

                          cit: Domanda 4 - Non sono bravo con le formule (si potrebbe fare sempre con VBA); se proprio vuoi qualche formula bisogna rivolgersi ... ad altri Amici… Ho letto da qualche parte che col VBa potrei creare delle function e poi richiamarle nel foglio… Se fattibile….

                           

                          Grazie

                          #6769 Score: 0 | Risposta

                          Marius44
                          Moderatore
                            58 pts

                            Ciao

                            E' già un buon passo avanti il fatto che funzioni.

                            Testala per bene e fai sapere.

                            Domani provo a "integrare" la macro per farla lavorare su 12 colonne invece di 4. Dopo vedremo per la UDF

                            Ciao,

                            Mario

                            #6770 Score: 0 | Risposta

                            Marius44
                            Moderatore
                              58 pts

                              Ciao

                              Ti allego il file. Guarda il Foglio2. Ho suddiviso le colonne per i tre serbatoi (non so se va bene così ma, al caso, è facile variare la struttura).

                              Ho "adattato" la macro per eseguire i calcoli in base ad una variazione nelle colonne E, I ed M. Se il valore della cella è maggiore di 0 (zero) ti mostra i risultati. Ecco la macro

                              Option Explicit
                              
                              Private Sub Worksheet_Change(ByVal Target As Range)
                              Dim ur As Long, i As Long, j As Long, k As Long, cln As Long
                              Dim oGcz As Double, nGcz As Double, pdzsum As Double, pdzday As Double
                              If Not Intersect(Target, Range("E:E, I:I, M:M")) Is Nothing Then
                                If Target.Count > 1 Then Exit Sub
                                cln = Target.Column
                                nGcz = Target.Value
                                For i = Target.Row - 1 To 2 Step -1
                                  If Cells(i, cln) > 0 Then
                                    oGcz = Cells(i, cln)
                                    pdzsum = Application.WorksheetFunction.Sum(Range(Cells(i + 1, cln - 1), Cells(Target.Row, cln - 1)))
                                    For j = i + 1 To Target.Row
                                      Cells(j, cln + 1) = (oGcz - nGcz) / pdzsum * Cells(j, cln - 1)
                                    Next j
                                    Exit Sub
                                  End If
                                Next i
                              End If
                              End Sub

                              In un Modulo standard ho inserito il codice della UDF Differ(). Se nella colonna G, K oppure O inserisci il nome della UDF e tra le parentesi inserisci l'indirizzo della cella relativa alla rimanenza (in altre parole rispettivamente della cella E, I o M) ti mostrerà la differenza. Questo il codice

                              Option Explicit
                              
                              Function Differ(ByRef rng As Range) As Double
                              Dim rga As Long, cln As Long, i As Long
                              Dim nGcz As Double, dif As Double
                              rga = rng.Row
                              cln = rng.Column
                              nGcz = Cells(rga, cln).Value
                              If nGcz > 0 Then
                                For i = rga - 1 To 2 Step -1
                                  If Cells(i, cln) > 0 Then
                                    dif = Cells(i, cln) - nGcz
                                    GoTo Xit
                                  End If
                                Next i
                              End If
                              Xit:
                              Differ = dif
                              End Function

                              Fai sapere. Ciao,

                              Mario

                               

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

                              danros
                              Partecipante

                                Ciao.

                                Scusa il ritardo ma sono stato fuori e non ho potuto applicarmi. 

                                Parlando con le dogane che gestiscono poi i controlli (trattasi di accise e quindi di svariati €) è saltato fuori che io dovrei: 1. leggere le giacenze e fare la somma per avere il totale. 2. Calcolare la differenza e compilare un registro 2. In base alla lettura successiva, suddividere lo scarico e i carichi sulle varie cisterne. 3. compilare il registro nr.2 relativo alle giacenze delle singole cisterne.

                                Ora cercherò con la tua UDF di seguire gli step come li vogliono loro (dicono che altrimenti non è facile ricostruire al contrario la giacenza, ma secondo me, la matematica è inconfutabile = partendo da A o da B sempre in C arrivo)

                                A parte la digressione dovuta alla frustazione direi che il tuo file funziona, sta a me applicarlo solo alle cisterne effettivamente coinvolte nello scarico. Ti chiedo solo una gentilezza: sarebbe possibile eseguire la spalmatura in base alle cisterne coinvolte?

                                In base al livello la macro dovrebbe "capire" da quali cisterne abbiamo prelevato e imputare il calo solo, ad esempio, alla 1  e, solo se la 1 si esaurisce, imputare alla 1 quanto c'è in giacenza e quanto manca imputarlo alla  2 ed eventualmente alla 3. Ci troviamo spesso con le tre cisterne praticamente scariche e quindi a pescare nella giornata da tutte.

                                Per fare quanto sopra, una alternativa potrebbe essere, aggiungere una colonna su cui scrivo la sequenza delle cisterne (ad esempio : 1-2-3): le alternative possono essere al massimo 6.

                                #6859 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  272 pts

                                  Marius44 wrote:GoTo Xit

                                  GWBasic è duro a morire  :mrgreen: 

                                  #6860 Score: 0 | Risposta

                                  Marius44
                                  Moderatore
                                    58 pts

                                    Ciao

                                    Vediamo di capirci. Per quanto riguarda la macro Private Sub Worksheet_Change(ByVal Target As Range) io ho scritto << Ho "adattato" la macro per eseguire i calcoli in base ad una variazione nelle colonne E, I ed M. >>

                                    Pertanto la macro entra in gioco quando tu cambi "un valore" in una delle colonne indicate ed esegue il calcolo SOLO sulle celle interessate. Non opera su tutta la colonna o su tutte e tre le colonne.

                                     

                                    Per quanto attiene la UDF il principio seguito è lo stesso solo che opera in altre colonne; voglio dire che dà il risultato dove tu scrivi =Differ() mettendo entro le parentesi la cella da dove vuoi che inizino i calcoli. Da questa cella "sale" fino a trovare un'altra cella piena.

                                     

                                    Non ho mai trattato di accise e con Dogane e, quindi, capisco poco. Prova a spiegare meglio cosa vorresti fare.

                                     

                                    Ciao,

                                    Mario 

                                     

                                    #6861 Score: 0 | Risposta

                                    Marius44
                                    Moderatore
                                      58 pts

                                      @vecchio frac

                                      Hai ragione. Si poteva mettere Exit For

                                       

                                      Non riesco a perdere la vecchia, malsana abitudine dei Goto e dei Gosub

                                      Ciao,

                                      Mario

                                      #6904 Score: 0 | Risposta

                                      danros
                                      Partecipante

                                        Allego il file da me modificato in cui ho aggiunto la situazione totale.

                                        ho sommato la giacenza dei tre serbatoi e riportato la produzione. ho applicato la funzione nella cella R33 e mi aspettavo mi spalmasse la differenza fino alla r28. Notando che la differenza era negativa (in quanto in mezzo ha avuto un carico). Ho provato allora ad applicare la funzione alla cella F33 e ho notato che la funz esegue la sola differenza. Mi può tornare utile, ma mi servirebbe libertà nel posizionare una formula che spalma.

                                        Sostanzialmente mi serve: 1. la produzione è giornaliera ed imputabile alla giacenza complessiva. 2 in base ai livelli devo capire se ho scaricato ma anche se ho caricato. Questa mattina avevo il serbatoio 3 vuoto, e ho controllato di persona, hanno caricato il 3 fino al colmo, poi sono passati al 2 finendo il carico.

                                        Se la funzione di spalmatura tenesse conto della sequenza di scarico che immetterei su altra colonna e sommasse anche i carichi (distribuendo il prodotto in base ai livelli) sarebbe il top.

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

                                        Marius44
                                        Moderatore
                                          58 pts

                                          Ciao

                                          Primo paragrafo del tuo ultimo post: la funzione esegue in quanto tu hai scritto nella cella S33 =Differ(R33) quindi stai dicendo ad Excel vai a vedere la funzione Differ ed esegui in base al valore che trovi nella cella che ti ho inserito come parametro (cioè R33). E la funzione esegue.

                                          Non può esserci alcuna "spalmatura" perchè il codice che esegue questo comando non è compreso nella UDF Differ() ma si trova come Evento Worksheet_Change relativo alle colonne  "E:E, I:I, M:M" quindi la colonna R o la colonna S non sono comprese nell'Evento. Se vuoi questo devi aggiungere dopo la seconda M e prima dei doppi apici questo ,R:R

                                           

                                          Secondo paragrafo - La cosa si fa più complessa e mancano informazioni.

                                          Dici che hanno caricato il 3 fino al colmo. Non hai mai parlato della capacità massima di ogni serbatoio. I punti 1 e 2 sono fattibili (almeno penso) ma vorrei porti, fra le tante, alcune domande:

                                          1) La produzione giorno è sempre uguale per tutti i serbatoi e, pertanto, puoi eliminare le colonne e lasciarne una sola;

                                          2) Puoi spiegare meglio cosa vuoi "vedere" (quindi cosa vuoi che le macro facciano) nel Foglio. Devi tener presente che dall'altra parte dello schermo c'è uno che non conosce il tuo lavoro, non sa cosa per te è importante e cosa non lo è.

                                          3) Le colonne D, H, L e Q hanno dei valori che si incrociano. Non sarebbe meglio "scrivere i valori nelle colonne relative ai singoli serbatoi e mettere la somma nella colonna del totale?

                                           

                                          Ciao,

                                          Mario

                                          #6979 Score: 0 | Risposta

                                          danros
                                          Partecipante

                                            Perdonami ma hai ragione.

                                            Possiamo fare tabula rasa? Posto che la risposta sia SI spiego cosa devo fare.

                                            Abbiamo una macchina che produce energia (un cogeneratore) consumando carburante. La produzione è quanti kWh produce in un giorno. Io devo determinare il consumo giornaliero per produrre X.

                                            I problemi sono i seguenti:

                                            - Le cisterne dove è stoccato il combustibile sono 3 e il relativo livello non è visibile tutti i giorni ma tipicamente solo dopo un carico (non chiedermi il perché, scelte aziendali!)

                                            - Avendo prodotti sottoposti ad accisa doganale devo tenere un registro giornaliero delle giacenze.

                                            Ora: se io leggo le giacenze ogni 5gg dopo che ho caricato Z, so che 5gg fa avevo giacenza Y mi serve spalmare la differenza in base alla produzione e dedurre le giacenze giornaliere. Per fare questo devo dire alla macro o al codice da quale cisterna ho scaricato/sto scaricando, o la sequenza impostata, (ora abbiamo S1->S3->S2: nel caso in cui la S1 stanotte si svuoti la logica inizia a svuotare la s3 e se anche questa si svuota, la S2). 

                                            La mia idea era quindi determinare la differenza tra le letture sia di energia che di carburante, poi in base ai 3 livelli determinare quali cisterne ho usato e svuotarli in sequenza

                                            28/9  - s1=20000 - s2=20000 - s3=20000 - P 12000

                                            29/9  - s1= ____ - s2= ____ - s3= ____ - P 12000

                                            30/9  - s1= ____ - s2= ____ - s3= ____ - P 12000

                                            01/10  - s1=5000 - s2=20000 - s3=20000 - P 12000 => ho consumato 15000kg, tutti dal S1

                                            02/10  - s1=0000 - s2=5000 - s3=20000 - P 24000 =>  ho consumato 10000kg, in parte dal S1 e in parte da s2

                                            I dati dopo l' "=>" vorrei fossero calcolati in automatico.

                                            #6980 Score: 0 | Risposta

                                            albatros54
                                            Moderatore
                                              88 pts

                                              danros wrote:ora abbiamo S1->S3->S2: nel caso in cui la S1 stanotte si svuoti la logica inizia a svuotare la s3 e se anche questa si svuota, la S2). 

                                              quindi S1 si svuota,la logica fa aspirare da S3 e quando questa si svuota aspiriamo da S2

                                              danros wrote:

                                              01/10  - s1=5000 - s2=20000 - s3=20000 - P 12000 => ho consumato 15000kg, tutti dal S1

                                              02/10  - s1=0000 - s2=5000 - s3=20000 - P 24000 =>  ho consumato 10000kg, in parte dal S1 e in parte da s2

                                              non corrisponde alla cronologia che tua hai spiegato prima,e poi il consumo dovrebbe essere 20000Kg(5000 da S1 e 15000 da S2)

                                               

                                               

                                              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 )
                                              #6984 Score: 0 | Risposta

                                              danros
                                              Partecipante

                                                cit. quindi S1 si svuota,la logica fa aspirare da S3 e quando questa si svuota aspiriamo da S2

                                                Esatto

                                                hai ragione. L'esempio postato serviva per far capire l'esigenza partendo dal presupposto che la sequenza fosse 1->2->3 e hai anche ragione sui miei conti. l'esempio corretto sarebbe il seguente.

                                                28/9  - s1=20000 - s2=20000 - s3=20000 - P 12000

                                                29/9  - s1= ____ - s2= ____ - s3= ____ - P 12000

                                                30/9  - s1= ____ - s2= ____ - s3= ____ - P 12000

                                                01/10  - s1=5000 - s2=20000 - s3=20000 - P 12000 => ho consumato 15000kg, tutti dal S1

                                                02/10  - s1=0000 - s2=5000 - s3=20000 - P 24000 =>  ho consumato 20000kg, in parte dal S1 [5000] e in parte da s2 [15000].

                                                Purtroppo a questo devo aggiungere il carico. Può essere che esegua anche un rifornimento che, dal punto di vista delle giacenza mi determina un consumo negativo, ma che in realtà mi determina un consumo e il carico necessario ad arrivare alla giacenza letta

                                                Esempio: se oggi carico 30000 e consumo come ieri, domani mi attendo di avere la seguente situazione:

                                                03/10  - s1=5000 - s2=10000 - s3=20000 - P 24000 =>  ho consumato 20000kg, in parte dal S1 [ X ] e in parte da s2 [ Y ].

                                                in quanto avevo 

                                                02/10  - s1=0000 - s2=5000 - s3=20000 - P 24000 =>  ho consumato 20000kg, in parte dal S1 [5000] e in parte da s2 [15000].

                                                Determino una giacenza dopo il carico di: s1=25000 - s2=10000 - s3=20000 - P 24000 =>  ho caricato 30000kg, in parte in S1 [25000] e in parte in s2 [5000]. Nella stessa giornata ho anche scaricato 20000 con sequenza 1-2-3 = S1 5000 - s2=10000 - s3=20000 => ottenendo quanto sopra

                                                s1=5000 - s2=10000 - s3=20000

                                                Spero di essere stato chiaro 🙂

                                                #6986 Score: 0 | Risposta

                                                Marius44
                                                Moderatore
                                                  58 pts

                                                  Salve a tutti

                                                  No, non puoi dirmi di fare "tabula rasa" dopo che ho faticato tanto! 😯 

                                                  Ovviamente scherzo.

                                                  Non ho letto tutta la "tiritera" che hai scritto più sopra nè le richieste/precisazioni di Albatros (ciao) ma, visto che l'avevo fatto, ti allego un file. Guarda il Foglio3.

                                                  La struttura di detto Foglio è diversa da come l'hai pensata tu ma voglio vedere se può andare (al caso si corregge). 

                                                  Ho anteposto le colonne relative al carico subito dopo la "Produzione  giorno" aggiungendo una particolarità: le celle F1:H1 hanno bisogno di un numero inserito, cioè 1, 2 o 3 (ma tutte e tre devono essere piene). Detto numero stabilisce quale cisterna va caricata per prima, quale per seconda e quale per ultima. Il tutto in base alla quantità di carico e alla capacità di ciascuna cisterna (la singola capacità è indicata rispettivamente in N1, Q1 e T1).

                                                   

                                                  A seguire ho messo due colonne per il Tot.Serbatoi: nella prima non vi è altro che la somma delle singole giacenze dei tre serbatoi; nella seconda se ci scrivi dentro =Differ(cella_a_sinistra) ottieni la differenza fra tot.giacenza attuale e tot.giacenza precedente (quindi consumo)

                                                   

                                                  Poi vi sono le colonne relative ai serbatoi (due per ogni serbatoio). Basta scrivere un numero nella colonna Giacenza e, nella colonna a destra, ti indica il consumo rapportato alla Produzione.

                                                   

                                                  Ovviamente, ribadisco, non essendo del mestiere ci saranno delle cavolate ma vorrei che tu dessi un'occhiata.

                                                   

                                                  Dimenticavo di dire che la Priorità (i numeri 1, 2 e 3) scritti nella prima riga possono essere cambiati ad ogni carico e ciò non inficia la distribuzione del carichi precedenti.

                                                   

                                                  Fai sapere. Ciao,

                                                  Mario

                                                   

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

                                                  danros
                                                  Partecipante

                                                    Ciao Marius

                                                    Scusa il ritardo ma sono stato travolto da altre commesse.

                                                    Scusa ma la cosa sta diventando forse più complessa di quel che è anche in considerazione di vari lavori da fare. Ti chiedo se possibile procedere a step.

                                                    Premesso che il tuo file non mi funziona, anche compilandolo non esegue nulla... ti allego il tuo da me modificato con i dati aggiornati.

                                                    Per farti capire:  Il carico dovrebbe determinarlo il foglio in base alle giacenze, ma se questo determina il cane che si mangia la coda, lasciamo stare e posso inserire il carico a mano.

                                                    Il mio obbiettivo è questo: Il giorno 11/10 ho fatto un carico e ho letto i livelli. Ho letto anche il giorno 12/10.

                                                    Ora il 16/10 ho fatto un altro carico e segnato il quantitativo immesso nelle tre cisterne. Il 17/10 ho letto i livelli. Con questa lettura mi aspetto che il foglio:

                                                    1. nella colonna totale, risalga fino al 12/10 e determini la differenza (tenendo conto del carico).

                                                    2. Questo risultato lo deve spalmare nei giorni in cui non ho fatto letture e determinare lo scarico giornaliero in base alla prodotta.

                                                    3. Deve eseguire le differenze di giacenza di ogni singolo serbatoio e usare lo scarico giornaliero fino a raggiungere la giacenza del 17/10 (eventualmente deve dividere lo scarico giornaliero su due serbatoi).

                                                    Grazie.

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

                                                    danros
                                                    Partecipante

                                                      Scusami ma ci ho lavorato un ora esegue quello che mi serve con alcune precisazioni.

                                                      1. il carico nei serbatoi lo faccio a mio piacimento (in sostanza guardo la giacenza letta il giorno dopo e deduco quanto olio è stato caricato nei singoli aggiustando.

                                                      2. Ogni volta che modifico un carico devo reinserire a mano la giacenza sulla colonna a fianco.

                                                      3. Non riesco a imputare lo scarico a una cisterna alla volta

                                                      Necessiterei di aiuto per implementare un controllo della colonna W. In queste celle definisco da quale serbatoi scaricare: Il primo numero identifica la priorità della S1, il secondo della S2, il terzo della S3.  

                                                      Se ho 

                                                      Priorità = 123  : significa che devo imputare tutto lo scarico alla S1 fino ad azzerare la giacenza e poi passare alla S2 e poi alla S3.

                                                      Priorità = 312  : significa che devo imputare tutto lo scarico alla S2 fino ad azzerare la giacenza e poi passare alla S1 e poi alla S3.

                                                      ATTENZIONE che se definisco

                                                      Priorità =111 : significa che sto scaricando da tutte e tre le cisterne e devo imputare tutto lo scarico alle 3 cisterne dividendolo equamente.

                                                      Priorità =112 : significa che sto scaricando da S1 e S2, e la S3 è in riserva se dovessi finire le prime 2.

                                                      Potrei gestire le priorità anche basandomi su tre colonne diverse se fosse più semplice.

                                                       

                                                      Problema al momento secondario: Segnalo infine che i dati di input non vengono digitati a mano ma inseriti copiando il solo valore da altro foglio che uso nel cellulare (in futuro il presente file dovrà aprire il file su cellulare e prelevarsi i dati). In tale situazione l'evento Worksheet_Change mi crea problemi in quanto copio i 3 valori in blocco. Temo serva inserire un pulsante per far eseguire i calcoli nelle celle modificate ma dovrei eseguire i calcoli solo dove ho modificato i dati. Ad esempio: inserisco le giacenze su S1, S2, S3. Il foglio calcola la giacenza globale.

                                                       

                                                       

                                                      Allegati:
                                                      You must be logged in to view attached files.
                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 25 totali)
                                                    Rispondi a: Spalmare dati tra colonne e ricerca prima cella vuota
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: