我有一个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。
1条答案
按热度按时间oipij1gg1#
如果数据存储在列中(假设存储在列A中),并且您希望结果也存储在列中(假设存储在列B中),则可以使用类似于以下公式的公式:
将其放置在单元格B1中并向下拖动。
如果数据存储在一行中(假设存储在第1行),并且您希望结果也存储在一行中(假设存储在第2行),则可以使用类似于以下公式的公式:
将其放置在单元格A2中并向右拖动。
正如你所看到的公式基本上是相同的。他们是不同的,只是因为一个将工作被拖下来,另一个由beign拖动的权利。如果你的列表不是从A1开始,公式可以很容易地适应。
你也可以写下一组60个单元格,第一个单元格是1,接下来的59个单元格等于第一个单元格(通过公式);那么第61个等于第一个加1(总是通过公式),后面的59等于第61个(也是通过公式)。您可以根据需要轻松地复制第二组。然后使用链接到新数字序列的简单索引公式,以所需列表中的所需单元格为目标。
当然,你也可以使用VBA,不过这可能有点过头了。
如果这个答案不充分,可能需要数据样本和/或更多细节。