Excel 使用VBA将数据从一张图纸复制到另一张图纸
在excel 2007中,尝试循环(非固定长度)列(如C)和行值匹配的位置(如“高”),然后将单元格Dx和Bx的值转移到新行的“转移”表中,其中x是找到匹配的行。假设存在“转移” 到目前为止,我得到了这个:Excel 使用VBA将数据从一张图纸复制到另一张图纸,excel,vba,Excel,Vba,在excel 2007中,尝试循环(非固定长度)列(如C)和行值匹配的位置(如“高”),然后将单元格Dx和Bx的值转移到新行的“转移”表中,其中x是找到匹配的行。假设存在“转移” 到目前为止,我得到了这个: Public Sub CopyRows() Sheets("Sheet1").Select 'Find the last row of data LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Loop through eac
Public Sub CopyRows()
Sheets("Sheet1").Select
'Find the last row of data
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Loop through each row
For x = 1 To FinalRow
'Decide if to copy based on column C
ThisValue = Cells(x, 3).Value
If ThisValue = "High" Then
Cells(x, 1).Resize(1, 33).Copy
Sheets("Transfer").Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End If
Next x
End Sub
我不会走那条路。我相信先设置一个过滤器,然后只复制可见的行会更快,更容易编码。事实上,最好使用高级过滤器 创建两个范围--一个用于条件(标题和单元格):
显然,使用Excel界面(数据-高级过滤器)更容易做到这一点。与学生作业的措辞完全相同。很抱歉,我是一名学生,因为我是VBA的新手,正在尝试拼凑一段工作代码;设法获取以下信息以复制整行:Public Sub CopyRows()Sheets(“Sheet1”)。选择“查找数据的最后一行LastRow=单元格(rows.Count,1)。结束(xlUp)。行”循环遍历每一行x=1到FinalRow“根据列C ThisValue=单元格(x,3)决定是否复制。如果ThisValue=“高”然后是单元格(x,1)。调整大小(1,33)。复制工作表(“传输”)。选择下一步=单元格(Rows.Count,1)。结束(xlUp)。行+1单元格(下一步,1)。选择活动工作表。粘贴工作表(“工作表1”)。如果下一个x End SUB,请选择End。您应该尽量避免使用
。对于大多数情况,请选择语句。所有内容都应使用父对象限定,因此,您不应使用单元格(x,1)
而应使用工作表(“Sheet1”)。单元格(x,1)
。为此,与。。。以
结尾是一种很好的方法,可以轻松地限定代码块。
*C column header* |
-------------------
High |
*B column header* | *D column header*
-------------------------------------
range("A:D").advancedfilter xlFilterCopy, range("criteria range"), range("copy range")