разделить таблицу Excel на основе специальных значений ячеек - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть данные в Excel о 950000 строк с 7 столбцами, и я хочу разделить их на основе данных V5 col.V5 хранит данные для времени в секундах в один час, поэтому мне нужно enter image description here разделить данные на листы, каждый лист содержит все значения, относящиеся к одной минуте, и так далее, пока не закончится разбиение

, еслилюбая помощь в этом с микро 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

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Я потратил много времени на то, чтобы использовать этот код, чтобы помочь в редактировании этого кода, чтобы я мог разделить общее количество строк на листе примерно на 1000000 строк, а код делает цикл только для 60000 строк в столбце E.Я не знаю, почему потребовалось от 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
0 голосов
/ 11 сентября 2018

Итак, я собрал кое-что для вас, чтобы вы начали.Скорее всего, вам придется скорректировать код в соответствии с точными временными рамками, которые соответствуют вашим требованиям (что будет хорошей возможностью для обучения!).Обратите внимание, что вы можете использовать подход для установки этих границ как фиксированных или переменных (то есть: приращения минут / секунд / часов или фиксированных границ, которые у меня есть сейчас)

Чтобы установить это, вам потребуется трилисты в вашей рабочей бумаге с именами (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
...