excel 将小时数据转换为分钟时间步长数据

epggiuax  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(233)

我有一个Excel文件,每小时的数据,即8760值一年。
我需要每一分钟的数据。
我需要取每小时的值,并将其复制到60个单元格中,一遍又一遍,直到得到525 600个值,这就是我的分钟时间步长。
我试过几种方法,但什么也做不了。
更新/解决方案:

Sub test()

Worksheets("MySheet").Activate

Dim i As Double 'minutes increment
Dim j As Integer 'hourly increment
Dim k As Double

k = 0 'initialization of k

Dim Var1 As Single
Dim Var2 As Single

    For j = 1 To 8760

        Var1 = Cells(j, 8).Value 'Row "j"/from 1 to 8760, column "8"/H --> hourly values
        Var2 = Cells(j, 7).Value 'Row "j"/from 1 to 60, column "7"/G --> minutes values

        For i = 1 To 60
    
            k = k + 1 'incrementation of k to be able to insert the values in the 60 cells (corresponding to 60 minutes)
            Cells(k + 3, 10) = Var1 'insert those values in the 10th column (J) 
            Cells(k + 3, 9) = Var2 'insert those values in the 10th column (I)
        
        Next i
    Next j 
End Sub

这也可以在没有VBA的情况下完成,如答案中所示,使用函数=INDEX。

oipij1gg

oipij1gg1#

如果数据存储在列中(假设存储在列A中),并且您希望结果也存储在列中(假设存储在列B中),则可以使用类似于以下公式的公式:

=INDEX(A:A,QUOTIENT(ROW(B1)-1,60)+1)

将其放置在单元格B1中并向下拖动。
如果数据存储在一行中(假设存储在第1行),并且您希望结果也存储在一行中(假设存储在第2行),则可以使用类似于以下公式的公式:

=INDEX(1:1,QUOTIENT(COLUMN(A2)-1,60)+1)

将其放置在单元格A2中并向右拖动。
正如你所看到的公式基本上是相同的。他们是不同的,只是因为一个将工作被拖下来,另一个由beign拖动的权利。如果你的列表不是从A1开始,公式可以很容易地适应。
你也可以写下一组60个单元格,第一个单元格是1,接下来的59个单元格等于第一个单元格(通过公式);那么第61个等于第一个加1(总是通过公式),后面的59等于第61个(也是通过公式)。您可以根据需要轻松地复制第二组。然后使用链接到新数字序列的简单索引公式,以所需列表中的所需单元格为目标。
当然,你也可以使用VBA,不过这可能有点过头了。
如果这个答案不充分,可能需要数据样本和/或更多细节。

相关问题