如何根据单元格内容select多个工作表来移动?

我谷歌search无济于事。

我需要一个代码来select多个工作表,并根据每个工作表单元格(1,8)的内容移动到一本新书中。 例如,单元格(1,8)中包含“fin Ops”的所有工作表都将移动到book1,然后将单元格(1,8)中包含“Re”的所有工作表移动到book2。

我试着从下面的代码开始,但作为一个初学者是有点艰难:

Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Cells(1, 8).Value = "Fin Ops" Then ActiveSheet.Select End If Next ws 

任何帮助是极大的赞赏!!

你实际上是在正确的轨道上! 你有正确的想法,使用for-each循环遍历所有的工作表。

在此之前,您需要做的是创build一些Workbook对象,这些对象将成为您希望将这些表单移动到的工作簿。 你可以这样做:

 Dim oBookOne As Workbook Set oBookOne = Application.Workbooks("<workbook name here>") 

重复所有的书所需的。 一旦创build了所有的工作簿对象,在For-each循环中,可以这样做:

 For Each ws In ActiveWorkbook.Worksheets If ws.Cells(1, 8).Value = "Fin Ops" Then ws.Move After:= oBookOne.Sheets(oBookOne.Sheets.Count) End If Next ws 

重复这一点,你需要筛选的每个标准,它应该工作!

如果您需要进一步的帮助,Google是您最好的朋友。 下面是关于工作簿对象如何工作的文档(heh), 这里是Move函数的文档。

码:

 Sub SelectMove() Dim ws As String Dim arr() As String Dim w As Worksheet Dim c As Long c = 0 For Each w In ActiveWorkbook.Worksheets If w.Cells(1, 8) = "Fin Ops" Then ws = ws & "," & w.Name End If Next ws = Right(ws, Len(ws) - 1) arr() = Split(ws, ",") Sheets(arr).Move End Sub