Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA将数据从一张图纸复制到另一张图纸_Excel_Vba - Fatal编程技术网

Excel 使用VBA将数据从一张图纸复制到另一张图纸

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

在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 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")