记录宏(Excel 2003)以有条件地按行复制粘贴
我每天都有来自外部来源的数据。在一张纸上,我有一个股票代码列表(按字母顺序排序),相应的数据在那一行继续 在另一张纸上,我把股票代码按相应的部门组织,而不是按字母顺序组织 我正在尝试开发一个宏,这样第一张纸上的信息会自动粘贴到第二张纸上,方法是识别股票代码并粘贴到相应的行中 以下是目前正在使用的代码,但它没有按预期的方式工作:记录宏(Excel 2003)以有条件地按行复制粘贴,excel,vba,Excel,Vba,我每天都有来自外部来源的数据。在一张纸上,我有一个股票代码列表(按字母顺序排序),相应的数据在那一行继续 在另一张纸上,我把股票代码按相应的部门组织,而不是按字母顺序组织 我正在尝试开发一个宏,这样第一张纸上的信息会自动粘贴到第二张纸上,方法是识别股票代码并粘贴到相应的行中 以下是目前正在使用的代码,但它没有按预期的方式工作: Dim LSymbol As String Dim LRow As Integer Dim LFound As Boolean On Error
Dim LSymbol As String
Dim LRow As Integer
Dim LFound As Boolean
On Error GoTo Err_Execute
'Retrieve symbol value to search for
LSymbol = Sheets("Portfolio Update").Range("B4").Value
Sheets("Test").Select
'Start at row 2
LRow = 2
LFound = False
While LFound = False
'Encountered blank cell in column B, terminate search
If Len(Cells(2, LRow)) = 0 Then
MsgBox "No matching symbol was found."
Exit Sub
'Found match in column b
ElseIf Cells(2, LRow) = LSymbol Then
'Select values to copy from "Portfolio Update" sheet
Sheets("Portfolio Update").Select
Range("B5:V5").Select
Selection.Copy
'Paste onto "Test" sheet
Sheets("Test").Select
Cells(3, LRow).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
LFound = True
MsgBox "The data has been successfully copied."
'Continue searching
Else
LRow = LRow + 1
End If
Wend
On Error GoTo 0
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub
谢谢。应该是。单元格(行,列)而不是。单元格(列,行)`
但是,可以使用Find()避免循环
编辑-添加到符号列表循环中它做什么而不是按预期工作?应该是。单元格(行,列)
不是。单元格(列,行)
@TimWilliams:这是一个有效答案;)(提示)@EBB:避免使用。选择查看此链接Tim Williams,@SiddharthRout,Awesome。感谢您的帮助和及时回复。我现在没有访问权限,但一旦我访问了,我将使用您的建议并让您知道它是如何运行的。再次感谢。Tim Williams,@SiddharthRout,我能够测试它,宏可以工作,但它只搜索、复制并将第一个股票代码的数据粘贴到“测试”表中。我正在尝试让宏搜索所有40个股票代码,并将适当的数据粘贴到“测试”表中。任何和所有帮助都将不胜感激。
Sub Tester()
Dim LSymbol As String
Dim shtPU As Worksheet
Dim shtTest As Worksheet
Dim f As Range
Dim c As Range
Set shtPU = Sheets("Portfolio Update")
Set shtTest = Sheets("Test")
On Error GoTo Err_Execute
For Each c In shtPU.Range("B4:B50").Cells
LSymbol = c.Value 'Retrieve symbol value to search for
If Len(LSymbol) > 0 Then
Set f = shtTest.Columns(2).Find(LSymbol, , xlValues, xlWhole)
If Not f Is Nothing Then
'was found
With c.Offset(0, 1).Resize(1, 21)
f.Offset(0, 1).Resize(1, .Columns.Count) = .Value
End With
c.Interior.Color = vbGreen
'MsgBox "The data has been successfully copied."
Else
'not found
c.Interior.Color = vbRed
'MsgBox "No matching symbol was found."
End If
End If
Next c
Exit Sub
Err_Execute:
MsgBox "An error occurred:" & Err.Description
End Sub