我在Excel文件中有一组数据,其第一列有日期&时间和其他列具有相同数量的数据。
我想要做的是使用VBA创建一个脚本,每15分钟后显示每列的平均值,这些平均值应显示在不同的表格上。
请参考下图以获取数据集的示例。
随着时间从12:05到13:45开始,所以我需要B,C和D列的平均值12:05到12.20,然后是12:25到1:40,依此类推请注意时间间隔可能不一样,所以我需要一个脚本,它包含循环以从A列读取值并相应地平均其他列
请参阅下文了解我目前的情况:
Sub AverageTimeCalculation()
Dim finalrow As Integer
Sheets("Elysees").Activate
finalrow = Sheets("Elysees").Range("A12120").Row
For i = 2 To finalrow
If Cells(i, 1).Value <= 42286.75 Then
Sheets("sheet1").FormulaR1C1 = "=AVERAGE(Elysees!cells(i,2))"
Sheets("sheet1").Range("B2").Select
Selection.AutoFill Destination:=Range("B2:V2"), Type:=xlFillDefault
Range("B2:V2").Select
End If
Next i
End Sub
答案 0 :(得分:0)
试一试。
使用Sheets&#34; Elysees&#34;将其粘贴到工作簿中的模块中。并插入一张表并命名为&#34; ElyseesAverage&#34;
Option Explicit
Sub AverageTimeCalculation()
Dim OriginalDataSheet As Worksheet
Set OriginalDataSheet = ThisWorkbook.Sheets("Elysees")
Dim AverageDataSheet As Worksheet
Set AverageDataSheet = ThisWorkbook.Sheets("ElyseesAverage")
Dim finalrow As Integer
With OriginalDataSheet
finalrow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Dim StartTimeRowReference As Integer
Dim AverageTimeBlock As Range
Dim ColumnReference As Integer
Dim AverageValue As Double ' use double for the decimals
Dim AverageDataSheetRowReference As Integer
AverageDataSheetRowReference = 2
For StartTimeRowReference = 2 To 200 Step 4
AverageDataSheet.Cells(StartTimeRowReference, "A").Value = OriginalDataSheet.Cells(StartTimeRowReference, "A").Value
For ColumnReference = 2 To 8
Set AverageTimeBlock = OriginalDataSheet.Range(Cells(StartTimeRowReference, ColumnReference), _
Cells(StartTimeRowReference + 3, ColumnReference))
AverageValue = WorksheetFunction.Average(AverageTimeBlock)
AverageDataSheet.Cells(AverageDataSheetRowReference, ColumnReference).Value = AverageValue
Next ColumnReference
Next StartTimeRowReference
End Sub