根据范围条件将特定的行项目复制到工作表

时间:2014-07-13 21:17:01

标签: excel-vba vba excel

我看了一下,发现了一两个相似的项目,但似乎都没有用(我得到一个我无法追踪的错误)。

基本上我希望从“数据”工作表中的特定列中获取数据,然后根据critera将其复制到多个其他工作表。

我想根据每行的“I”列进行搜索。然后我想只将A:H复制到另一张表。

我在下面使用的代码顺利运行,但没有任何内容被复制。当我尝试将搜索号从1更改为01时,它会给出一个未指定的错误。最终,我想让它拉出下面项目范围内的任何内容,并将A:H复制到现有的备用工作表。 (更多细节如下)

所以,在粘贴代码之前,这里是摘要:

  • 搜索第I列的连续范围(我假设我将连续放置多个搜索/复制/粘贴项目)6-8进入早期,9-11早上,12-16,下午,17- 19驾驶时间和20-5夜(我尝试使用原始时间,但指定06:00:08:59的范围是不可能的AFAIK)

  • 仅将该行中的特定列复制到新工作表(A:H)

然后是一个重置按钮,只清除那些数据列的所有表(我的代码在那些依赖于它们的列之外)


A   B   C   D   E   F   G   H   I   J   K   L   M   N
x1  C   6/1/2014 6:40:27 PM OS  7   4   1   6   6/1/2014    18:40   6:00:00 PM  0.0%    Sunday  Week 1
x2  C   6/1/2014 7:45:28 PM JH  10  -   1   2   6/1/2014    19:45   7:00:00 PM  100.0%  Sunday  Week 1

    Sub CopyData()
 Dim LSearchRow As Integer
 Dim LCopyToRow As Integer

 On Error GoTo Err_Execute

 'Start search in row 2
 LSearchRow = 2

 'Start copying data to row 2 in 6-8 (row counter variable)
 LCopyToRow = 2

 While Len(Range("A" & CStr(LSearchRow)).Value) > 0

 'If value in column I = "Between 6 - 8", copy entire row to Early
 If Range("I" & CStr(LSearchRow)).Value = "6" Then

Sheets("Data").Range("A" & LSearchRow & ":H" & LSearchRow).Copy _
Sheets("Early").Range("A" & LCopyRow)

 'Move counter to next row
 LCopyToRow = LCopyToRow + 1

 'Go back to Data Sheet to continue searching
 Sheets("Data").Select

 End If

 LSearchRow = LSearchRow + 1

 Wend

 'Position on cell A3
 Application.CutCopyMode = False
 Range("A3").Select

 MsgBox "All matching data has been copied."

 Exit Sub

Err_Execute:
 MsgBox "An error occurred."

 End Sub

事先感谢大家,感谢任何帮助!

0 个答案:

没有答案