Medie oraria



  • Medie oraria
    di Aleandro data: 05/06/2017 16:40:15

    Ciao a tutte/i,
    mi approccio da poco al linguaggio VBA, e forse già con un esercizio difficile.
    Il mio problema da risolvere è questo:
    - ho i dati di tre misure A, B e C, fatte ogni mezza ora, in una determinata data, dovrei calcolare la media oraria e quella giornaliera.
    Qualcuno, per favore, potrebbe instradarmi, cosi da capire come iniziare ad impostare il codice?

    Grazie anticipatamente

    p.s. Allego un file di esempio, dei dati di partenza



  • di Mister_x (utente non iscritto) data: 05/06/2017 18:10:53

    ciao

    ti riposto il tuo file dove ho creato una maschera che riporta la media oraria per ogni giorno in questione
    e la media giornaliera per data , se e' questo che intendi per medie e vuoi svilupparlo in VBA fai sapere
    per poter proseguire nello sviluppo di esso,
    se lo schema e il risultato e' diverso da quello proposta metti alcuni risultati di cosa vuoi ottenere

    ciao





  • di Aleandro (utente non iscritto) data: 07/06/2017 14:21:59

    Ciao Mister_x,
    innanzitutto grazie per il tuo contributo,
    ho allegato il file medie1.1, come esempio del risultato che vorrei avere.
    Vorrei , fare quelle operazioni di medie attraverso il codice in VBA, per imparare a programamre, e capire come muovermi.



  • di Mister_x (utente non iscritto) data: 07/06/2017 16:24:21

    ciao

    ho creato due sub() una in foglio(Hour) e una in foglio(Day)

    riallego il file con le sub() inserite

    ciao


     
    sheets("hour")
    Option Explicit
    Sub media_oraria()
    On Error Resume Next
    Dim i As Long, d As Long
    Dim Sh1 As String, Sh2 As String
    Dim Data As Long, Ora As Double
    Dim conta As Long
    Dim vA As Double, vB As Double, vC As Double
    vA = 0
    vB = 0
    vC = 0
    conta = 0
    Sh1 = "Dati"
    Sh2 = "Hour"
    Sheets(Sh2).Select
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
     Data = Fix(Cells(i, 1))
     Ora = Cells(i, 1) - Fix(Cells(i, 1))
    For d = 2 To Sheets(Sh1).Cells(Rows.Count, 1).End(xlUp).Row
     If Sheets(Sh1).Cells(d, 1) = Data And Sheets(Sh1).Cells(d, 2) >= Ora _
           And Sheets(Sh1).Cells(d, 2) < Ora + 1 / 24 Then
           vA = vA + Sheets(Sh1).Cells(d, 3)
           vB = vB + Sheets(Sh1).Cells(d, 4)
           vC = vC + Sheets(Sh1).Cells(d, 5)
           conta = conta + 1
     End If
    Next d
    Cells(i, 2) = vA / conta
    Cells(i, 3) = vB / conta
    Cells(i, 4) = vC / conta
    vA = 0
    vB = 0
    vC = 0
    conta = 0
    Next i
    End Sub
    
    Sheets("Day")
    Option Explicit
    Sub Media_Giorno()
    On Error Resume Next
    Dim i As Long, d As Long
    Dim Sh1 As String, Sh3 As String
    Dim conta As Long
    Dim vA As Double, vB As Double, vC As Double
    vA = 0
    vB = 0
    vC = 0
    conta = 0
    Sh1 = "Dati"
    Sh3 = "Day"
    Sheets(Sh3).Select
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
      For d = 2 To Sheets(Sh1).Cells(Rows.Count, 1).End(xlUp).Row
       If Sheets(Sh1).Cells(d, 1) = Cells(i, 1) Then
           vA = vA + Sheets(Sh1).Cells(d, 3)
           vB = vB + Sheets(Sh1).Cells(d, 4)
           vC = vC + Sheets(Sh1).Cells(d, 5)
           conta = conta + 1
       End If
      Next d
      Cells(i, 3) = vA / conta
      Cells(i, 4) = vB / conta
      Cells(i, 5) = vC / conta
      vA = 0
      vB = 0
      vC = 0
      conta = 0
    Next i
    End Sub
    






  • di Aleandro (utente non iscritto) data: 07/06/2017 23:38:16

    Ciao,
    grazie ancora, proverò le sub, e le studio subito.