使用VBA将数据从一个工作表复制到另一个工作表

时间:2011-06-10 11:10:06

标签: excel excel-vba 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 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 

2 个答案:

答案 0 :(得分:1)

我不会这样。我认为首先设置过滤器并仅复制可见行会更快地运行并且更容易编码。

答案 1 :(得分:1)

事实上,最好使用高级过滤器。

创建两个范围 - 一个用于条件(标题和单元格):

*C column header* |
-------------------
High              |

一个用于有用数据(仅限标题):

*B column header* | *D column header*
-------------------------------------

然后使用

range("A:D").advancedfilter xlFilterCopy, range("criteria range"), range("copy range")

显然,使用Excel界面(数据 - 高级过滤器)更容易完成。