我试图运行宏以打开工作簿,搜索单词Apples,然后将单词下面的第一行复制到单词上一本新的工作手册。一切都在列A中,单词“苹果”出现在多行上。此代码当前将下一行的Apple &这个词移到另一个表单上。我希望它移动到另一个工作簿,并采取下面的行。由于某种原因,它还在最后抓取了2条不需要的线。我一直在摆弄它,但不知道该从哪里出发。Excel VBA搜索列中的单词并将该单词下面的行复制到新的工作簿中
Sub Apples()
Date1 = Range("B3").Value
ChDir "C:\Users\Name\Desktop\" & Date1
Workbooks.OpenText Filename:= _
"C:\Users\Name\Desktop\" & Date1 & "\File" & Left(Date1, 4), Origin:= _
437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Windows("Apples" & Left(Date1, 4)).Activate
Sheets.Add After:=Sheets(Sheets.Count)
Const fWhat As String = "Apples"
Dim R As Range, fAdr As String, nR As Long, cutRng As Range, Ar As Range, i As Long, delAdr As String
With Sheets("Apples" & Left(Date1, 4))
Set R = .Range("A:A").Find(fWhat, [A1], xlFormulas, xlPart, , , False)
If Not R Is Nothing Then
fAdr = R.Address
Set cutRng = R.Offset(0, 0).Resize(4, .UsedRange.Columns.Count)
Do
Set R = .Range("A:A").FindNext(R)
If R Is Nothing Then Exit Do
If R.Address = fAdr Then Exit Do
Set cutRng = Union(cutRng, R.Offset(0, 0).Resize(4, .UsedRange.Columns.Count))
Loop
End If
If Not cutRng Is Nothing Then
delAdr = cutRng.Address
nR = 1
For Each Ar In cutRng.Areas
Ar.Cut Destination:=Sheets(.Index + 1).Range("A" & nR)
nR = Sheets(.Index + 1).Range("A" & Rows.Count).End(xlUp).Row - 1
Next Ar
.Range(delAdr).Delete shift:=xlUp
End If
End With
End Sub
你想复制下面的行吗?你的代码是CUTTING包含苹果的行和DELETING那一行。另外,为什么你使用偏移量为4 ..参见'.Resize(4,...'?给定行与苹果,梨,苹果,李子,你想要发生什么?将梨和李子复制到新的工作表? – 2014-12-01 23:28:27
是将苹果和梨复制到新工作簿上,目前正在复制到新工作表 – tim 2014-12-02 16:46:41
“新”工作簿是否已经存在?如果是,是哪里和什么名称?如果不是,名称应该是什么?和工作表名称?此VBA代码是否真的需要打开不同的工作簿才能访问源行,或者它可以在包含要搜索的数据的同一工作簿中运行? – 2014-12-02 16:55:37