我尝试在网站上搜索此解决方案,但我无法找到完全匹配。我正在尝试找出将执行以下操作的VBA代码:
这是我的问题。指定行中的值可以是300多个唯一值中的1个,因此在VBA代码中指定每个值将是一场噩梦。
我理解按字母顺序过滤指定列会起作用,但是如何告诉宏在每个组的末尾停止并将其复制到新表?基本上我怎么会说“如果下一个值与当前值不匹配,就开始一本新书”? (IE:向下搜索C列并复制包含“Bat”的所有行,然后复制到新书,然后向下搜索C列并复制包含“Car”的所有行,然后复制到新书)
非常感谢任何帮助!
答案 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