select并提取数据行到另一个工作表

我正在处理包含股票信息的大型工作表,其中列是这样组织的:

ID DATE TIME PRICE QUANTITY NBE 

它继续为500k +行,我有10 +张通过。 我只需要提取每个交易日的前两个交易,并在新的工作表(Sheet1)上创build一个新的清单。 每天的第一笔交易总是在“09:00:00”。

到目前为止,我写了这段代码,其中我试图复制我需要的两行,然后将它们粘贴到Sheet1中,从而创build新列表。 它运行没有错误,但没有显示出来…

 Sub Macro1() i = 2 Range("C2").Select Range(Selection, Selection.End(xlDown)).Select For Each Cell In Selection If Day(.Range("B" & cRow).Value) <> Day(.Range("B" & cRow - 1).Value) Then ActiveCell.EntireRow.Copy ActiveWorkbook.Sheets("Sheet1").Rows(i).Paste ActiveCell.Offset(1).Copy ActiveWorkbook.Sheets("Sheet1").Rows(i + 1).Paste i = i + 2 End If Next Cell End Sub 

我不应该select和复制粘贴两行在一起? 或者是否有可能创build一个从activecell的2行6列组成的范围,然后复制粘贴范围?

编辑1:它不工作..我更新它像上面,但我仍然在这里得到一个错误438 ActiveWorkbook.Sheets(“Sheet1”)。行(i)。粘贴

编辑2:我没有一个大的菜鸟。 刚刚意识到不是每一个第一笔交易都是在9:00:00完成的,所以我需要根据这一行来select行,或者没有一天过去,并select前两行。 我可以使用这个条件来代替:如果日(范围(“B”和cRow).Value)<>天(范围(“B”和cRow – 1)。值)然后呢?

这应该很快

请确保您在工作表中的数据并运行它,它会将其复制到第1行开始的同一工作簿中的工作表1上

你应该确保sheet1也是空的,使用.clearContents

 Sub Macro1() Dim lngFirstRow As Long Dim lngLastRow As Long Dim cRow As Long Dim shSrc As Worksheet Dim lngNextDestRow As Long Dim shDest As Worksheet Application.ScreenUpdating = False Set shSrc = ActiveWorkbook.ActiveSheet Set shDest = ActiveWorkbook.Sheets("Sheet1") With shSrc lngFirstRow = 2 lngLastRow = .Cells.Find(What:="*", After:=.Cells.Cells(1), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row lngNextDestRow = 2 For cRow = lngFirstRow To lngLastRow Step 1 If Format(.Range("C" & cRow).value, "hh:mm:ss") = "09:00:00" Then .Rows(cRow).EntireRow.Copy Destination:=shDest.Range("A" & lngNextDestRow ) .Rows(cRow+1).EntireRow.Copy Destination:=shDest.Range("A" & lngNextDestRow+1 ) lngNextDestRow = lngNextDestRow + 2 End If Next cRow End With Application.ScreenUpdating = True End Sub 

我敢打赌,你的Time列被格式化为一个date/时间字段,所以你比较string09:00:00长(date/时间),它永远不会是平等的。

尝试这个:

 if Format(Cell.Value, "hh:mm:ss") = "09:00:00" Then 

而你的英语并不差

当您使用以下行参考工作表时

 ActiveWorkbook.Sheets(Sheet1).Rows(i).Paste 

Sheet1可能是一个没有正确定义的variables。 如果“Sheet1”是工作表的实际名称,则将其用双引号括起来

 ActiveWorkbook.Sheets("Sheet1").Rows(i).Paste 

看@ FreeMan的回答….你应该先做。 修复他所说的话后,你可能会得到一个错误9脚标错误。