
Sub a()
Set sh1 = Sheets(1)
LR1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
LC1 = sh1.Cells(12, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(2)
For r = 5 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "B")
fine = .Cells(r, "C")
For r1 = 13 To LR1
If sh1.Cells(r1, "B") = nome Then
For c = 1 To LC1
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
somma1 = somma1 + sh1.Cells(r1, c)
n = n + 1
End If
Next
media1 = somma1 / n
n = 0: somma1 = 0
.Cells(r, "D") = media1
End If
Next
Next
End With
End Sub |
Sub ADR()
Set sh1 = Sheets(6)
LR1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row
LC1 = sh1.Cells(2, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(8).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(8)
For r = 2 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "C")
fine = .Cells(r, "D")
For r1 = 2 To LR1
If sh1.Cells(r1, "A") = nome Then
For c = 1 To LC1
Data1 = sh1.Cells(1, c)
If Data1 >= inizio And Data1 <= fine Then
somma1 = somma1 + sh1.Cells(r1, c)
n = n + 1
End If
Next
media1 = somma1 / n
n = 0: somma1 = 0
.Cells(r, "E") = media1
End If
Next
Next
End With
End Sub |
Sub ADR()
Set sh1 = Sheets(4)
LR1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row
LC1 = sh1.Cells(2, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(3).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(3)
For r = 2 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "C")
fine = .Cells(r, "D")
For r1 = 2 To LR1
If sh1.Cells(r1, "A") = nome Then
For c = 1 To LC1
Data1 = sh1.Cells(1, c)
If Data1 >= inizio And Data1 <= fine Then
somma1 = somma1 + sh1.Cells(r1, c)
n = n + 1
End If
Next
media1 = somma1 / n
n = 0: somma1 = 0
.Cells(r, "E") = media1 |
Option Explicit
Sub ADR()
Dim sh1 As Worksheet: Set sh1 = Worksheets("UP") ' da cambiare casomai
Dim sh2 As Worksheet: Set sh2 = Worksheets("FINAL") ' da cambiare casomai
Dim LR1 As Long, LR2 As Long, LC1 As Long, LC2 As Long, X As Long, Y As Long, W As Long
Dim Area1 As Range, Area2 As Range, RR As Object, CC1 As Object, CC2 As Object, R As Long, C1 As Long, C2 As Long
Dim Nome As String, Inizio As Date, Fine As Date, Data1 As Date, UltimoGiorno As Date, Q As Range
Dim Media As Double, Somma As Double, N As Long
LR1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row
LC1 = sh1.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
LR2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
Set Area1 = sh1.Range("A1:A" & LR1)
Set Area2 = sh1.Range(sh1.Cells(1, 1), sh1.Cells(1, LC1))
With sh2
For X = 2 To LR2
Nome = .Cells(X, "A")
Inizio = .Cells(X, "C")
Inizio = DateSerial(Year(Inizio), Month(Inizio) + 1, 0)
Fine = .Cells(X, "D")
Fine = DateSerial(Year(Fine), Month(Fine) + 1, 0)
Set RR = Area1.Find(Nome, LookIn:=xlValues, LookAt:=xlWhole)
If RR Is Nothing Then
MsgBox "nessuna corrispondenza"
Else
R = RR.Row
End If
Set CC1 = Area2.Find(Inizio, LookIn:=xlValues, LookAt:=xlWhole)
If Not CC1 Is Nothing Then
C1 = CC1.Column
End If
Set CC2 = Area2.Find(Fine, LookIn:=xlValues, LookAt:=xlWhole)
If Not CC2 Is Nothing Then
C2 = CC2.Column
End If
For Y = C1 To C2
If sh1.Cells(R, Y) = "#NA" Then Exit For
Somma = Somma + sh1.Cells(R, Y)
N = N + 1
Next Y
If Somma > 0 Then
Media = Somma / N
N = 0: Somma = 0
.Cells(X, "E") = Media
Else
.Cells(X, "E") = "Celle in Errore"
End If
Next X
End With
Set Area1 = Nothing
Set Area2 = Nothing
Set sh1 = Nothing
Set sh2 = Nothing
End Sub |
Next Y
If N = (C2 - C1) + 1 Then
Media = Somma / N
.Cells(X, "E") = Media
N = 0: Somma = 0
Else
.Cells(X, "E") = Media & " Alcune Celle in Errore"
End If
Next X
MsgBox "Fatto"
End With |
Sub a()
Set sh1 = Sheets(1)
LR1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
LC1 = sh1.Cells(12, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(2)
For r = 5 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "B")
fine = .Cells(r, "C")
For r1 = 13 To LR1
If sh1.Cells(r1, "B") = nome Then
For c = 1 To LC1
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
somma1 = somma1 + sh1.Cells(r1, c)
n = n + 1
End If
Next
media1 = somma1 / n
n = 0: somma1 = 0
.Cells(r, "D") = media1
For c = 1 To LC1
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
varianza1 = sh1.Cells(r1, c) - media1
n = n + 1
dev1 = varianza1 / n
n = 0: somma1 = 0
.Cells(r, "E") = dev1
End If
Next
End Sub
|
Sub a()
Set sh1 = Sheets(1)
LR1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
LC1 = sh1.Cells(12, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(2)
For r = 5 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "B")
fine = .Cells(r, "C")
For r1 = 13 To LR1
If sh1.Cells(r1, "B") = nome Then
For c = 1 To LC1
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
somma1 = somma1 + sh1.Cells(r1, c)
n = n + 1
End If
Next c
media1 = somma1 / n
varianza1 = ((somma1 - media1) * (somma1 - media1)) / n
n = 0: somma1 = 0
.Cells(r, "D") = media1
.Cells(r, "E") = varianza1
End If
Next r1
Next r
End With
End Sub
|
Sub a()
Set sh1 = Sheets(1)
LR1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
LC1 = sh1.Cells(12, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(2)
For r = 5 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "B")
fine = .Cells(r, "C")
For r1 = 13 To LR1
If sh1.Cells(r1, "B") = nome Then
For c = 1 To LC1 '(ciclo for "C" per la media)
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
somma1 = somma1 + sh1.Cells(r1, c)
n = n + 1
End If
Next c
media1 = somma1 / n
.Cells(r, "D") = media1
For c = 1 To LC1 '(ciclo for "C" per la varianza1)
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
varianza1 = varianza1 + ((sh1.Cells(r1, c) - media1) ^ 2)
End If
Next c
'varianza1 = (varianza1 / n)' forse è cosi
varianza1 = (varianza1 / n) * varianza1 'mi sembra che devi moltiplicarlo
.Cells(r, "E") = varianza1
n = 0: somma1 = 0
End If
Next r1
Next r
End With
End Sub
|
Sub v()
Set sh1 = Sheets(1)
LR1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
LC1 = sh1.Cells(12, Cells.Columns.Count).End(xlToLeft).Column
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
With Sheets(2)
For r = 5 To LR2
nome = .Cells(r, "A")
inizio = .Cells(r, "B")
fine = .Cells(r, "C")
media1 = .Cells(r, "D")
For r1 = 13 To LR1
If sh1.Cells(r1, "B") = nome Then
For c = 1 To LC1
Data1 = sh1.Cells(12, c)
If Data1 >= inizio And Data1 <= fine Then
varianza1 = varianza1 + (sh1.Cells(r1, c) - media1) * (sh1.Cells(r1, c) - media1)
n = n + 1
End If
Next c
dev1 = varianza1 / n
n = 0: varianza1 = 0
.Cells(r, "E") = dev1
End If
Next r1
Next r
End With
End Sub
|
