我在excel中有一个数据表,行长约950000,有7列。我想根据V5列数据进行划分。 V5将以秒为单位的时间将数据保存在一小时内,因此我需要将数据划分为几张纸,每张纸包含与一分钟有关的所有值,依此类推,直到完成拆分为止。
如果在微型VBA方面有帮助的话,那会很好。
这就是我在VBA中可以做的事情
Sub SPLIT()
Dim ws1, ws2 As Worksheet
Dim row2 As Integer
Dim rw As Range
Dim dv, fv As Variant
Set ws1 = Sheets("sheet1")
Set ws2 = Sheets.Add
row2 = 1
For Each rw In ws1.Rows
If rw.Cells(1, 5).Value2 = 00:00:59 Then " and so on until i divide each minute data rows alone"
Exit For
End If
答案 0 :(得分:0)
所以我为您准备了一些东西,可以帮助您入门。您可能必须针对适合您要求的确切时间调整代码(这将是一个很好的学习机会!)。请注意,您可以采用将这些范围设置为固定范围或可变范围的方法(即:以分钟/秒/小时为增量,或者是我现在有的固定范围)
要进行此设置,您的工作文件中需要三张纸,分别是(1)小时,(2)分钟和(3)秒。
在设置代码之后,将根据行是在一分钟,一小时以下还是一小时以上来对行进行排序并放入边界。
要严格按照自己的要求调整代码,如果有任何疑问,请随时告诉我!
Function Last_Row(Sheet_Name As String)
Last_Row = Sheets(Sheet_Name).Range("A" & Sheets(Sheet_Name).Rows.Count).End(xlUp).Row
End Function
Sub AllocateSheet()
Dim Cell As Variant
Dim Cell_Range As Range
Set Cell_Range = Range("E2:E990000")
Seperator_Second = TimeValue("00:00:01")
Seperator_Minute = TimeValue("00:01:00")
Seperator_Hour = TimeValue("01:00:00")
For Each Cell In Cell_Range
If Cell.Value >= Seperator_Hour Then
Rows(Cell.Row).Copy Destination:=Sheets("Hours").Rows(Last_Row("Hours") + 1)
ElseIf Cell.Value <= Seperator_Hour And Cell.Value >= Seperator_Minute Then
Rows(Cell.Row).Copy Destination:=Sheets("Minutes").Rows(Last_Row("Minutes") + 1)
ElseIf Cell.Value <= Seperator_Minute And Cell.Value >= Seperator_Second Then
Rows(Cell.Row).Copy Destination:=Sheets("Seconds").Rows(Last_Row("Seconds") + 1)
End If
Next Cell
End Sub
答案 1 :(得分:0)
我花了几分钟的时间来编写此代码,以帮助编辑此代码,因此我可以将工作表中的总行划分为1000000行,并且该代码使循环仅遍历E列中的60000行。我不知道为什么它只需要从1到6000 E1:E6000并在60000行上循环就可以了。以及我如何制作新的床单 将其粘贴到代码中。
Option Explicit
Sub Test()
ti=TimeValue("00:00:00")
Dim Cell As Range
With Sheets(1)
For Each Cell In .Range("E1:E6000" & .Cells(.Rows.Count, "E").End(xlUp).Row)
If Cell.Value <= ti Then
.Rows(Cell.Row).Copy Destination:=Sheets("first minute").Rows(Cell.Row)
End If
Next Cell
End With
End Sub