将动态单元格/行复制到新工作表或工作簿中

时间:2013-08-14 22:23:07

标签: vba excel-vba copy-paste worksheet-function excel

我尝试在网站上搜索此解决方案,但我无法找到完全匹配。我正在尝试找出将执行以下操作的VBA代码:

  1. 搜索指定的列
  2. 找到所有匹配的值(未指定)
  3. 复制所述匹配值的行
  4. 将它们放入新工作表或工作簿(最好是工作簿)
  5. 这是我的问题。指定行中的值可以是300多个唯一值中的1个,因此在VBA代码中指定每个值将是一场噩梦。

    我理解按字母顺序过滤指定列会起作用,但是如何告诉宏在每个组的末尾停止并将其复制到新表?基本上我怎么会说“如果下一个值与当前值不匹配,就开始一本新书”? (IE:向下搜索C列并复制包含“Bat”的所有行,然后复制到新书,然后向下搜索C列并复制包含“Car”的所有行,然后复制到新书)

    非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

假设您的数据已分组,即不是:

batman
batman
robin
robin
batman

但是:

batman
batman
batman
robin
robin

然后,这将抓住所有连续的块并将它们推入自己的工作簿中。它还假设所有内容都在A列中,因此如果需要,请进行更改。

Sub grabber()
Dim thisWorkbook As Workbook
Set thisWorkbook = ActiveWorkbook
last = 1
For i = 1 To 18 'my sample had 18 rows, replace it with how many you have
If Range("A" & i) <> Range("A" & (i + 1)) Then
Range("A" & last & ":A" & i).Copy
Set NewBook = Workbooks.Add
NewBook.Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues
last = i + 1
thisWorkbook.Activate
End If
Next i
End Sub